<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DE4HRng-fip7ImA9WhRaFE0.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799</id><updated>2012-02-17T00:42:17.656+09:00</updated><category term="Xperia" /><category term="Mobile" /><category term="docomo" /><category term="Android" /><category term="au" /><category term="SoftBank" /><category term="Eclipse" /><title>Android 奔走記</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://weide-dev.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>55</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/ZeXx" /><feedburner:info uri="blogspot/zexx" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUQHSHs6fip7ImA9Wx5bFk8.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-6705328041399465100</id><published>2010-11-01T23:50:00.004+09:00</published><updated>2010-11-01T23:55:39.516+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-01T23:55:39.516+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Tab を作ってみた その2</title><content type="html">XMLリソースを使わずにTabを作る場合(XMLリソース使う場合は &lt;a href="http://weide-dev.blogspot.com/2010/04/tab.html"&gt;Tab を作ってみた&lt;/a&gt;)&lt;br /&gt;
Intent を指定するか，&lt;br /&gt;
TabHost.TabContentFactory インターフェースを使用する．&lt;br /&gt;
&lt;br /&gt;
TabContentFactory の public View createTabContent(String tag) を実装すると，&lt;br /&gt;
返り値の View がそのまま Tab の画面に表示される&lt;br /&gt;
&lt;br /&gt;
というわけで，Tab を作ってみる&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class TabSample extends TabActivity implements TabHost.TabContentFactory {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    // TabHost の取得
    final TabHost tabHost = getTabHost();
    
    // アイコン付きタブ
    tabHost.addTab(tabHost.newTabSpec("tab1")
        .setIndicator("tab1", getResources().getDrawable(R.drawable.icon))
        .setContent(this));
    
    // 任意の View
    tabHost.addTab(tabHost.newTabSpec("tab2")
        .setIndicator("Views")
        .setContent(new MyTabContentFactory()));

    // Intent を起動するタブ
    tabHost.addTab(tabHost.newTabSpec("tab3")
        .setIndicator("List")
        .setContent(new Intent(this, ListViewSample.class)));
  }

  public View createTabContent(String tag) {
    final TextView tv = new TextView(this);
    tv.setText("This is " + tag);
    return tv;
  }

  // TabContentFactory を実装したクラスの作成
  class MyTabContentFactory implements TabContentFactory {
    public View createTabContent(String tag) {
      // 任意の View を設定
      View view = LayoutInflater.from(TabSample.this).inflate(R.layout.views, null);
      return view;
    }  
  }
}
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/TM7Sip594jI/AAAAAAAAAQ0/nDFB0cAJlXY/s1600/TabSample.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/TM7Sip594jI/AAAAAAAAAQ0/nDFB0cAJlXY/s320/TabSample.png" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_jzy8V0BkCW0/TM7SjBqWz0I/AAAAAAAAAQ4/G5AKPaEv_PU/s1600/TabSample2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_jzy8V0BkCW0/TM7SjBqWz0I/AAAAAAAAAQ4/G5AKPaEv_PU/s320/TabSample2.png" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/TM7Sjd2V5SI/AAAAAAAAAQ8/dKf5vHl9FK8/s1600/TabSample3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/TM7Sjd2V5SI/AAAAAAAAAQ8/dKf5vHl9FK8/s320/TabSample3.png" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/widget/TabHost.TabContentFactory.html"&gt;http://developer.android.com/intl/ja/reference/android/widget/TabHost.TabContentFactory.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-6705328041399465100?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZO3Gb544nE88sJeokEFsgIfe_RQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZO3Gb544nE88sJeokEFsgIfe_RQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZO3Gb544nE88sJeokEFsgIfe_RQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZO3Gb544nE88sJeokEFsgIfe_RQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/aQpsw7zgS7Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/6705328041399465100/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/11/tab2.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/6705328041399465100?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/6705328041399465100?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/aQpsw7zgS7Q/tab2.html" title="Tab を作ってみた その2" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_jzy8V0BkCW0/TM7Sip594jI/AAAAAAAAAQ0/nDFB0cAJlXY/s72-c/TabSample.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/11/tab2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8ERX8_eyp7ImA9Wx5WEE8.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-5350625212469018735</id><published>2010-09-20T23:03:00.001+09:00</published><updated>2010-09-21T08:20:04.143+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-21T08:20:04.143+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>ListPreference を使ってみた</title><content type="html">ListPreference は&lt;br /&gt;
&lt;pre&gt;java.lang.Object
  ↳ android.preference.Preference
    ↳ android.preference.DialogPreference
      ↳ android.preference.ListPreference
&lt;/pre&gt;を使います&lt;br /&gt;
&lt;br /&gt;
List の Dialog を表示させる Preference の一つで&lt;br /&gt;
String型の値を SharedPreferences に保存します&lt;br /&gt;
&lt;br /&gt;
というわけで，ListPreference をいじってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class EditTextPreferenceSample extends PreferenceActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // addPreferencesFromResource(R.xml.edittext_preference);

    PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(this);

    PreferenceCategory pc = new PreferenceCategory(this);
    pc.setTitle(R.string.title_category);
    ps.addPreference(pc);

    EditTextPreference editTextPreference = new EditTextPreference(this);
    editTextPreference.setKey(getString(R.string.key_edittext_preference));
    editTextPreference.setTitle(R.string.title_edittext_preference);
    editTextPreference.setSummary(R.string.summary_edittext_preference);
    editTextPreference.setDialogTitle(R.string.dialog_title_edittext_preference);
    editTextPreference.setDialogMessage(R.string.dialog_message_edittext_preference);

    pc.addPreference(editTextPreference);
    setPreferenceScreen(ps);
  }
}
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/TJTEL-lB3wI/AAAAAAAAAQk/oOKkxdj4M1U/s1600/list_preference.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/TJTEL-lB3wI/AAAAAAAAAQk/oOKkxdj4M1U/s320/list_preference.png" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_jzy8V0BkCW0/TJTEOBVjiNI/AAAAAAAAAQs/8vel3muKM_0/s1600/list_preference_dialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_jzy8V0BkCW0/TJTEOBVjiNI/AAAAAAAAAQs/8vel3muKM_0/s320/list_preference_dialog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
XML で一括で作成することもできます&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class ListPreferenceSample extends PreferenceActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // XML で Preference を設定
    addPreferencesFromResource(R.xml.list_preference);

    // ListPreference の取得
    ListPreference listPreferrence = 
      (ListPreference) findPreference(
          getString(R.string.key_list_preference));
  }  
}
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;List_preference.xml&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;PreferenceScreen 
  xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;
  &amp;lt;PreferenceCategory 
    android:title="@string/title_category"&amp;gt;
    &amp;lt;ListPreference 
      android:key="@string/key_list_preference"
      android:title="@string/title_list_preference" 
      android:summaryOn="@string/summary_list_preference"
      android:entries="@array/entries_list_preference" 
      android:entryValues="@array/entryvalues_list_preference"
      android:dialogTitle="@string/dialog_title_list_preference" /&amp;gt;
  &amp;lt;/PreferenceCategory&amp;gt;
&amp;lt;/PreferenceScreen&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/preference/ListPreference.html"&gt;http://developer.android.com/intl/ja/reference/android/preference/ListPreference.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-5350625212469018735?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i0XxSp_6XPgcMHyPnfgwLir2Jgk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i0XxSp_6XPgcMHyPnfgwLir2Jgk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i0XxSp_6XPgcMHyPnfgwLir2Jgk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i0XxSp_6XPgcMHyPnfgwLir2Jgk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/qSjZgD7BSR4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/5350625212469018735/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/09/listpreference.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/5350625212469018735?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/5350625212469018735?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/qSjZgD7BSR4/listpreference.html" title="ListPreference を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_jzy8V0BkCW0/TJTEL-lB3wI/AAAAAAAAAQk/oOKkxdj4M1U/s72-c/list_preference.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/09/listpreference.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkANRXg5fip7ImA9Wx5WEE8.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-4730634465393742289</id><published>2010-09-19T23:02:00.001+09:00</published><updated>2010-09-21T08:19:54.626+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-21T08:19:54.626+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>EditTextPreference を使ってみた</title><content type="html">EditTextPreference は&lt;br /&gt;
&lt;pre&gt;java.lang.Object
  ↳ android.preference.Preference
    ↳ android.preference.DialogPreference
      ↳ android.preference.EditTextPreference
&lt;/pre&gt;を使います&lt;br /&gt;
&lt;br /&gt;
EditText を Dialog 上で表示させる Preference の一つで&lt;br /&gt;
String型の値を SharedPreferences に保存します&lt;br /&gt;
&lt;br /&gt;
というわけで，EditTextPreference をいじってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class EditTextPreferenceSample extends PreferenceActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(this);

    PreferenceCategory pc = new PreferenceCategory(this);
    pc.setTitle(R.string.title_category);
    ps.addPreference(pc);

    EditTextPreference editTextPreference = new EditTextPreference(this);
    editTextPreference.setKey(getString(R.string.key_edittext_preference));
    editTextPreference.setTitle(R.string.title_edittext_preference);
    editTextPreference.setSummary(R.string.summary_edittext_preference);
    editTextPreference.setDialogTitle(R.string.dialog_title_edittext_preference);
    editTextPreference.setDialogMessage(R.string.dialog_message_edittext_preference);

    pc.addPreference(editTextPreference);
    setPreferenceScreen(ps);
  }
}
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/TJTDxXA3jBI/AAAAAAAAAQU/BCJOVmlgIAQ/s1600/edittext_preference.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/TJTDxXA3jBI/AAAAAAAAAQU/BCJOVmlgIAQ/s320/edittext_preference.png" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/TJTD08GzwKI/AAAAAAAAAQc/ZY_uDVxAzsY/s1600/edittext_preference_dialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/TJTD08GzwKI/AAAAAAAAAQc/ZY_uDVxAzsY/s320/edittext_preference_dialog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
XML で一括で作成することもできます&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class EditTextPreferenceSample extends PreferenceActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // XML で Preference を設定
    addPreferencesFromResource(R.xml.edittext_preference);

    // EditTextPreference の取得
    EditTextPreference editTextPreferrence = 
      (EditTextPreference) findPreference(
          getString(R.string.key_edittext_preference));
  }  
}
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;edittext_preference.xml&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;PreferenceScreen 
  xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;
  &amp;lt;PreferenceCategory 
    android:title="@string/title_category"&amp;gt;
    &amp;lt;EditTextPreference 
      android:key="@string/key_edittext_preference"
      android:title="@string/title_edittext_preference" 
      android:summary="@string/summary_edittext_preference"
      android:dialogTitle="@string/dialog_title_edittext_preference" /&amp;gt;
  &amp;lt;/PreferenceCategory&amp;gt;
&amp;lt;/PreferenceScreen&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/preference/EditTextPreference.html"&gt;http://developer.android.com/intl/ja/reference/android/preference/EditTextPreference.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-4730634465393742289?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Tou4vHUlluZM3tHq0d5QL6jrYb4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Tou4vHUlluZM3tHq0d5QL6jrYb4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Tou4vHUlluZM3tHq0d5QL6jrYb4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Tou4vHUlluZM3tHq0d5QL6jrYb4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/QWJ9ivEPgIQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/4730634465393742289/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/09/edittextpreference.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/4730634465393742289?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/4730634465393742289?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/QWJ9ivEPgIQ/edittextpreference.html" title="EditTextPreference を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_jzy8V0BkCW0/TJTDxXA3jBI/AAAAAAAAAQU/BCJOVmlgIAQ/s72-c/edittext_preference.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/09/edittextpreference.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEMRHw4eSp7ImA9Wx5XGEw.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-8673820503468893011</id><published>2010-09-18T23:01:00.001+09:00</published><updated>2010-09-18T23:04:45.231+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-18T23:04:45.231+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>CheckBoxPreference を使ってみた</title><content type="html">CheckBoxPreference は&lt;br /&gt;
&lt;pre&gt;java.lang.Object
  ↳ android.preference.Preference
    ↳ android.preference.CheckBoxPreference
&lt;/pre&gt;を使います&lt;br /&gt;
&lt;br /&gt;
checkbox の機能を持つ Preference の一つで&lt;br /&gt;
boolean型の値を SharedPreferences に保存します&lt;br /&gt;
&lt;br /&gt;
というわけで，CheckBoxPreference をいじってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class CheckBoxPreferenceSample extends PreferenceActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    CheckBoxPreference checkBoxPreference = new CheckBoxPreference(this);

    // Key の設定
    checkBoxPreference.setKey(getString(R.string.key_checkbox_preference));
    // Title の設定
    checkBoxPreference.setTitle(R.string.title_checkbox_preference);

    // サマリーを設定
    //checkBoxPreference.setSummary(R.string.summary_checkbox_preference);
    // CheckBox が On の時のサマリーを設定
    checkBoxPreference.setSummaryOn("Summary On");
    // CheckBox が Off の時のサマリーを設定
    checkBoxPreference.setSummaryOff("Summary Off");

    // PrefenceScreen &amp;amp; PreferenceCategory
    PreferenceScreen ps = getPreferenceManager().createPreferenceScreen(this);
    PreferenceCategory pc = new PreferenceCategory(this);
    // PreferenceCategory のタイトルを設定
    pc.setTitle(R.string.title_category);
    // PreferenceCategory を PreferenceScreen に追加
    ps.addPreference(pc);
    // Preference を PreferenceCategory に追加
    pc.addPreference(checkBoxPreference);
    // PreferenceScrren の設定
    setPreferenceScreen(ps);

    // Preference がチェックされているか
    checkBoxPreference.isChecked();
    // チェック状態を変更
    //checkBoxPreference.setChecked(true);

    // Preference が変更されたときに呼び出されるコールバックの登録
    checkBoxPreference.setOnPreferenceChangeListener(
        new OnPreferenceChangeListener() {
          @Override
          public boolean onPreferenceChange(
              Preference preference,
              Object newValue) {
            // Preference が変更されたときの動作
            return true;
          }    
        });
  }  
}
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/TJTDdbYB_lI/AAAAAAAAAQE/asidaZd1B_s/s1600/checkboxpreference_off.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/TJTDdbYB_lI/AAAAAAAAAQE/asidaZd1B_s/s320/checkboxpreference_off.png" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_jzy8V0BkCW0/TJTDgUpmD3I/AAAAAAAAAQM/mv0Log7OoVw/s1600/checkboxpreference_on.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_jzy8V0BkCW0/TJTDgUpmD3I/AAAAAAAAAQM/mv0Log7OoVw/s320/checkboxpreference_on.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
XML で一括で作成することもできます&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class CheckBoxPreferenceSample extends PreferenceActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // XML で Preference を設定
    addPreferencesFromResource(R.xml.checkbox_preference);

    // CheckBoxPreference の取得
    CheckBoxPreference checkBoxPreferrence = 
      (CheckBoxPreference) findPreference(
          getString(R.string.key_checkbox_preference));
  }  
}
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;checkbox_preference.xml&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;PreferenceScreen 
  xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;
  &amp;lt;PreferenceCategory 
    android:title="@string/title_category"&amp;gt;
    &amp;lt;CheckBoxPreference 
      android:key="@string/key_checkbox_preference"
      android:title="@string/title_checkbox_preference" 
      android:summaryOn="@string/summary_on_checkbox_preference"
      android:summaryOff="@string/summary_off_checkbox_preference" /&amp;gt;
      &amp;lt;!-- android:summary="@string/summary_checkbox_preference" --&amp;gt;
  &amp;lt;/PreferenceCategory&amp;gt;
&amp;lt;/PreferenceScreen&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/preference/CheckBoxPreference.html"&gt;http://developer.android.com/intl/ja/reference/android/preference/CheckBoxPreference.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-8673820503468893011?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pGxH7lKCUNGBg-j7zMk-3KcXlVg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pGxH7lKCUNGBg-j7zMk-3KcXlVg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pGxH7lKCUNGBg-j7zMk-3KcXlVg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pGxH7lKCUNGBg-j7zMk-3KcXlVg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/BnNdnsZAElk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/8673820503468893011/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/09/checkboxpreference.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/8673820503468893011?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/8673820503468893011?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/BnNdnsZAElk/checkboxpreference.html" title="CheckBoxPreference を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_jzy8V0BkCW0/TJTDdbYB_lI/AAAAAAAAAQE/asidaZd1B_s/s72-c/checkboxpreference_off.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/09/checkboxpreference.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMEQ3c4cCp7ImA9Wx5XGEw.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-1780310041972463442</id><published>2010-09-16T23:09:00.017+09:00</published><updated>2010-09-18T23:00:02.938+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-18T23:00:02.938+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>SharedPreferences を使ってみた</title><content type="html">Preference は Androidアプリでデータを保存する方法のひとつ&lt;br /&gt;
データをキーと値の組み合わせで保存します.&lt;br /&gt;
&lt;br /&gt;
ファイルなどに保存するよりも非常に簡単にデータを保存できます&lt;br /&gt;
&lt;br /&gt;
今回は SharedPreferences を...&lt;br /&gt;
&lt;br /&gt;
SharedPreferences はまず &lt;br /&gt;
getSharedPreferences(String name, int mode);&lt;br /&gt;
でを取得してきます&lt;br /&gt;
name は Preference 自体の名前を指定します&lt;br /&gt;
mode には&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Activity.MODE_PRIVATE&lt;/li&gt;
&lt;li&gt;Activity.MODE_WORLD_READABLE&lt;/li&gt;
&lt;li&gt;Activity.MODE_WORLD_WRITEABLE&lt;/li&gt;
&lt;/ul&gt;などを指定します.&lt;br /&gt;
&lt;br /&gt;
保存された Preference は data/data/パッケージ名/shared_prefs&lt;br /&gt;
の中に xmlファイルとして保存されるようです&lt;br /&gt;
&lt;br /&gt;
取得する時は&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;getString(String key, String defValue);&lt;/li&gt;
&lt;li&gt;getInt(String key, int defValue);&lt;/li&gt;
&lt;li&gt;getLong(String key, long defValue);&lt;/li&gt;
... &lt;/ul&gt;などを使って取得して着ます&lt;br /&gt;
&lt;br /&gt;
というわけで，Preference を使ってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class PreferencesTest extends Activity implements OnClickListener {
  private static final String PREF_KEY = "preferenceTest";
  private static final String KEY_TEXT = "text";

  SharedPreferences pref;
  SharedPreferences.Editor editor;

  EditText mEditText;
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.preferencestest);

    // SharedPrefernces の取得
    pref = getSharedPreferences(PREF_KEY, Activity.MODE_PRIVATE);

    mEditText = (EditText) findViewById(R.id.EditText);

    Button button;
    button = (Button) findViewById(R.id.Button);
    button.setOnClickListener(this);
    
    TextView textView;
    textView = (TextView) findViewById(R.id.TextView);
    // SharedPreferences よりデータを取得
    textView.setText(pref.getString(KEY_TEXT, "No Data"));
  }

  public void onClick(View v) {
    if (v.getId() == R.id.Button) {
      // Editor の設定
      editor = pref.edit();
      // Editor に値を代入
      editor.putString(
          KEY_TEXT,
          mEditText.getText().toString()
      );
      // データの保存
      editor.commit();
    }
  }
}
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
保存して...&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/TJIYLP_DRcI/AAAAAAAAAP0/nQmSv7bD8Do/s1600/preferencetest2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/TJIYLP_DRcI/AAAAAAAAAP0/nQmSv7bD8Do/s320/preferencetest2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
再び起動&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_jzy8V0BkCW0/TJIYPtynL3I/AAAAAAAAAP8/yndL1nupjp0/s1600/preferencetest3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_jzy8V0BkCW0/TJIYPtynL3I/AAAAAAAAAP8/yndL1nupjp0/s320/preferencetest3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
ちなみに保存された Preference は&lt;br /&gt;
&lt;b&gt;preferencetest.xml&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;map&amp;gt;
&amp;lt;string name="text"&amp;gt;Test&amp;lt;/string&amp;gt;
&amp;lt;/map&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/content/SharedPreferences.html"&gt;http://developer.android.com/intl/ja/reference/android/content/SharedPreferences.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-1780310041972463442?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hxRWYe-UAqQH9eJHzwYL8GDf_dg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hxRWYe-UAqQH9eJHzwYL8GDf_dg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hxRWYe-UAqQH9eJHzwYL8GDf_dg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hxRWYe-UAqQH9eJHzwYL8GDf_dg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/Bx5BXAWdmiY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/1780310041972463442/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/09/sharedpreferences.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/1780310041972463442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/1780310041972463442?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/Bx5BXAWdmiY/sharedpreferences.html" title="SharedPreferences を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_jzy8V0BkCW0/TJIYLP_DRcI/AAAAAAAAAP0/nQmSv7bD8Do/s72-c/preferencetest2.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/09/sharedpreferences.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYGRHkzfip7ImA9Wx5XFkw.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-6405848148076847364</id><published>2010-09-16T00:56:00.006+09:00</published><updated>2010-09-16T13:08:45.786+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-16T13:08:45.786+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Wallpaper を替えてみた</title><content type="html">壁紙を替えるには WallpaperManager を使用します&lt;br /&gt;
&lt;br /&gt;
替え方は&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;setBitmap(Bitmap bitmap)&lt;/li&gt;
&lt;li&gt;setResource(int resid)&lt;/li&gt;
&lt;li&gt;setStream(InputStream data)&lt;/li&gt;
&lt;/ul&gt;の三つから指定します&lt;br /&gt;
&lt;br /&gt;
まず AndroidManifest でパーミッションを設定する必要があります&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;AndroidManifest.xml&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
  ... &amp;gt;
    ・
    ・
    ・
  &amp;lt;uses-permission 
    android:name="android.permission.SET_WALLPAPER" /&amp;gt;
&amp;lt;/manifest&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class WallpaperSample extends Activity implements OnClickListener {
  WallpaperManager mWM;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.wallpaper_sample);

    Button button;
    button = (Button) findViewById(R.id.Button_Set);
    button.setOnClickListener(this);
    button = (Button) findViewById(R.id.Button_Clear);
    button.setOnClickListener(this);

    // WindowManager の取得
    mWM = WallpaperManager.getInstance(this);

    // 壁紙の最小の幅，最小の高さの取得
    int width = mWM.getDesiredMinimumWidth();
    int height = mWM.getDesiredMinimumHeight();
  }

  @Override
  public void onClick(View v) {
    switch(v.getId()) {
    case R.id.Button_Set:
      try {
        // 壁紙をリソースから設定
        mWM.setResource(R.drawable.icon);
      } catch (IOException e) {
        e.printStackTrace();
      }
      break;
    case R.id.Button_Clear:
      try {
        // 壁紙をデフォルトに戻す
        mWM.clear();
      } catch (IOException e) {
        e.printStackTrace();
      }
      break;
    }
  }
}
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
変更前&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/TJGXfynyHmI/AAAAAAAAAPc/PLRLLFhkjeY/s1600/wallpapermanager.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/TJGXfynyHmI/AAAAAAAAAPc/PLRLLFhkjeY/s320/wallpapermanager.png" /&gt;&lt;/a&gt;&lt;/div&gt;変更後&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/TJGXjvMWdHI/AAAAAAAAAPk/OR_QEMWSJjc/s1600/wallpapermanager.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/TJGXjvMWdHI/AAAAAAAAAPk/OR_QEMWSJjc/s320/wallpapermanager.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
Activity の背景を壁紙にしたいときは&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;activity 
  android:name=".activity.WallpaperSample"
  android:theme="@android:style/Theme.Wallpaper"&amp;gt;
&lt;/pre&gt;とテーマを指定すればOK&lt;br /&gt;
&lt;br /&gt;
ちなみに&lt;br /&gt;
API 2.0以前ではできないので注意!&lt;br /&gt;
下記の方法で設定するようです&lt;br /&gt;
int width = getWallpaperDesiredMinimumWidth();&lt;br /&gt;
int height = getWallpaperDesiredMinimumHeight();&lt;br /&gt;
setWallpaper(Bitmap or InputStream);&lt;br /&gt;
clearWallpaper();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/app/WallpaperManager.html"&gt;http://developer.android.com/intl/ja/reference/android/app/WallpaperManager.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-6405848148076847364?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6ndH-9NClgp2gYKtli4MHV-U4Xg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6ndH-9NClgp2gYKtli4MHV-U4Xg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6ndH-9NClgp2gYKtli4MHV-U4Xg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6ndH-9NClgp2gYKtli4MHV-U4Xg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/l9InRW7YdY4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/6405848148076847364/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/09/wallpapermanager.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/6405848148076847364?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/6405848148076847364?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/l9InRW7YdY4/wallpapermanager.html" title="Wallpaper を替えてみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_jzy8V0BkCW0/TJGXfynyHmI/AAAAAAAAAPc/PLRLLFhkjeY/s72-c/wallpapermanager.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/09/wallpapermanager.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cERXs-fyp7ImA9Wx5QE00.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-7077570955652857259</id><published>2010-08-31T23:25:00.002+09:00</published><updated>2010-09-01T09:30:04.557+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-01T09:30:04.557+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>ExpandableListView を使ってみた</title><content type="html">ExpandableListView は&lt;br /&gt;
&lt;pre&gt;java.lang.Object
  ↳ android.view.View
    ↳ android.view.ViewGroup
      ↳ android.widget.AdapterView&amp;lt;T extends android.widget.Adapter&amp;gt;
        ↳ android.widget.AbsListView
          ↳ android.widget.ListView
            ↳ android.widget.ExpandableListView
&lt;/pre&gt;を使用します&lt;br /&gt;
&lt;br /&gt;
Group のリストがありそれぞれが Child のリストを保持しています.&lt;br /&gt;
Group をクリックすRと Child のリストが開き，もう一度クリックするとリストが閉じられます.&lt;br /&gt;
&lt;br /&gt;
というわけで，ExpandableListView をいじってみた.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class ExpandableListViewSample extends Activity {
  private static final String KEY1 = "GROUP";
  private static final String KEY2 = "CHILD";

  // 表示させる文字列
  private String[] GROUPS = {"Group1", "Group2", "Group3"};
  private String[][][] CHILDREN = {
      {{"Child11", "Text11"}}, 
      {{"Child21", "Text21"}, {"Child22", "Text22"}},
      {{"Child31", "Text31"}, {"Child32", "Text32"}, {"Child33", "Text33"}}, 
  };

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.expandablelistview_sample);

    // 設定する文字列のリスト
    List&amp;lt;Map&amp;lt;String, String&amp;gt;&amp;gt; groupData =
        new ArrayList&amp;lt;Map&amp;lt;String, String&amp;gt;&amp;gt;();
    List&amp;lt;List&amp;lt;Map&amp;lt;String, String&amp;gt;&amp;gt;&amp;gt; childData =
        new ArrayList&amp;lt;List&amp;lt;Map&amp;lt;String, String&amp;gt;&amp;gt;&amp;gt;();

    // リストに文字列を設定していく
    for (int i = 0; i &amp;lt; GROUPS.length; i++) {
      // 親要素の追加
      Map&amp;lt;String, String&amp;gt; curGroupMap =
          new HashMap&amp;lt;String, String&amp;gt;();
      groupData.add(curGroupMap);
      curGroupMap.put(KEY1, GROUPS[i]);
      curGroupMap.put(KEY2, "");

      List&amp;lt;Map&amp;lt;String, String&amp;gt;&amp;gt; children =
          new ArrayList&amp;lt;Map&amp;lt;String, String&amp;gt;&amp;gt;();
      if (CHILDREN.length &amp;gt; i) {
        for (int j = 0; j &amp;lt; CHILDREN[i].length; j++) {
          // 子要素の追加
          Map&amp;lt;String, String&amp;gt; curChildMap =
              new HashMap&amp;lt;String, String&amp;gt;();
          children.add(curChildMap);
          curChildMap.put(KEY1, CHILDREN[i][j][0]);
          curChildMap.put(KEY2, CHILDREN[i][j][1]);
        }
      }
      childData.add(children);
    }

    // ExpandbleListAdapter の作成
    ExpandableListAdapter adapter =
        new SimpleExpandableListAdapter(
            this,
            groupData,
            android.R.layout.simple_expandable_list_item_1,
            new String[] { KEY1, KEY2 },
            new int[] { android.R.id.text1, android.R.id.text2 },
            childData,
            android.R.layout.simple_expandable_list_item_2,
            new String[] { KEY1, KEY2 },
            new int[] { android.R.id.text1, android.R.id.text2 }
        );

    ExpandableListView listView = 
      (ExpandableListView) findViewById(R.id.ExpandableListView);
    // Adapter を設定
    listView.setAdapter(adapter);
    
    // グループがクリックされた時に呼び出されるコールバックを登録
    listView.setOnGroupClickListener(new OnGroupClickListener() {
      @Override
      public boolean onGroupClick(ExpandableListView parent,
          View v, int groupPosition, long id) {
        // クリックされた時の処理
        return false;
      }      
    });
    
    // グループ内の項目がクリックされた時に呼び出されるコールバックを登録
    listView.setOnChildClickListener(new OnChildClickListener() {
      @Override
      public boolean onChildClick(ExpandableListView parent, View v,
          int groupPosition, int childPosition, long id) {
        // クリックされた時の処理
        return false;
      }      
    });
  }  
}
&lt;/pre&gt;&lt;br /&gt;
さらに &lt;br /&gt;
setOnGroupCollapseListener でグループが閉じた時，&lt;br /&gt;
setOnGroupExpandListener でグループが開いた時&lt;br /&gt;
の処理もできる模様！&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;XMLリソース&lt;/b&gt; &lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" 
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"&amp;gt;
  &amp;lt;TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="ExpandableListViewSample" /&amp;gt;
  &amp;lt;ExpandableListView 
    android:layout_width="fill_parent"
    android:layout_height="0dip" 
    android:layout_weight="1"
    android:id="@+id/ExpandableListView"&amp;gt;
  &amp;lt;/ExpandableListView&amp;gt;
&amp;lt;/LinearLayout&amp;gt;
&lt;/pre&gt;プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_jzy8V0BkCW0/TH2dmko0qkI/AAAAAAAAAPM/cia4a_QUouw/s1600/expandablelistview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_jzy8V0BkCW0/TH2dmko0qkI/AAAAAAAAAPM/cia4a_QUouw/s320/expandablelistview.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
グループを開いたとき&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/TH2dpeMD-nI/AAAAAAAAAPU/uDdVTb2pSSI/s1600/expandablelistview2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/TH2dpeMD-nI/AAAAAAAAAPU/uDdVTb2pSSI/s320/expandablelistview2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考サイト &lt;a href="http://developer.android.com/intl/ja/reference/android/widget/ExpandableListView.html"&gt;http://developer.android.com/intl/ja/reference/android/widget/ExpandableListView.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-7077570955652857259?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vrLzAKsUtWruVZsHGjB15nxGRCI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vrLzAKsUtWruVZsHGjB15nxGRCI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vrLzAKsUtWruVZsHGjB15nxGRCI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vrLzAKsUtWruVZsHGjB15nxGRCI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/y4yg5QIJsx0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/7077570955652857259/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/08/expandablelistview.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/7077570955652857259?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/7077570955652857259?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/y4yg5QIJsx0/expandablelistview.html" title="ExpandableListView を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_jzy8V0BkCW0/TH2dmko0qkI/AAAAAAAAAPM/cia4a_QUouw/s72-c/expandablelistview.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/08/expandablelistview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8GRHYzeip7ImA9Wx5RGEs.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-4560578529041926649</id><published>2010-08-26T23:42:00.011+09:00</published><updated>2010-08-27T08:03:45.882+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-27T08:03:45.882+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>ListView で MultipleChoice モード</title><content type="html">ListView で複数選択できるような List を作ることができます．&lt;br /&gt;
&lt;br /&gt;
基本的には ListView や SingleChoice と同じ.&lt;br /&gt;
Adapter の作成時に Muliple Choice ようのレイアウトを設定するのと&lt;br /&gt;
setChoiceMode で ListView.CHOICE_MODE_MULTIPLEを設定するくらい&lt;br /&gt;
すると CheckBox 付きのリストが表示されます.&lt;br /&gt;
&lt;br /&gt;
というわけで，MultipleChoiceList をいじってみた.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class MultipleChoiceListViewSample extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listview_sample);
    ListView listView = (ListView)findViewById(R.id.ListView);

    // アダプタの作成
    listView.setAdapter(new ArrayAdapter&amp;lt;String&amp;gt;(
        this,
        android.R.layout.simple_list_item_multiple_choice,
        DAYS)
    );

    // フォーカスが当たらないよう設定
    listView.setItemsCanFocus(false);

    // 選択の方式の設定
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    
    for (int i = 1; i &amp;lt; 6; i++) {
      // 指定したアイテムがチェックされているかを設定
      listView.setItemChecked(i, true);
    }
    
    // アイテムがクリックされたときに呼び出されるコールバックを登録
    listView.setOnItemClickListener(new OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView&amp;lt;?&amp;gt; parent,
              View view, int position, long id) {
          // クリックされた時の処理
      }
    });
    
    // 現在チェックされているアイテムを取得
    // チェックされてないアイテムは含まれない模様
    SparseBooleanArray checked = listView.getCheckedItemPositions();
    for (int i = 0; i &amp;lt; checked.size(); i++) {
      // チェックされているアイテムの key の取得
      int key = checked.keyAt(i);
      Log.v(getClass().getSimpleName(), "values: " + DAYS[key]);
    }
  }
  
  // ListView に表示させる文字列
  private static final String[] DAYS = new String[] {
    "Sunday", "Monday", "Tuesday", "Wednesday",
    "Thursday", "Friday", "Saturday"
  };
}
&lt;/pre&gt;&lt;b&gt;XMLリソース&lt;/b&gt; &lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" 
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"&amp;gt;
  &amp;lt;TextView android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="ListSample" /&amp;gt;
  &amp;lt;ListView 
    android:layout_width="fill_parent"
    android:layout_height="0dip" 
    android:layout_weight="1"
    android:id="@+id/ListView"&amp;gt;
  &amp;lt;/ListView&amp;gt;
&amp;lt;/LinearLayout&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/THbwBCxc_xI/AAAAAAAAAO8/IdqjZF63nwY/s1600/multiplehoicelistview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/THbwBCxc_xI/AAAAAAAAAO8/IdqjZF63nwY/s320/multiplehoicelistview.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/widget/ListView.html"&gt;http://developer.android.com/intl/ja/reference/android/widget/ListView.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-4560578529041926649?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Lp3qJ1ISuuuIOe5sKL-Z1CCvpwM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Lp3qJ1ISuuuIOe5sKL-Z1CCvpwM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Lp3qJ1ISuuuIOe5sKL-Z1CCvpwM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Lp3qJ1ISuuuIOe5sKL-Z1CCvpwM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/dXm_pw7S4xA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/4560578529041926649/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/08/multiplechoicelistview.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/4560578529041926649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/4560578529041926649?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/dXm_pw7S4xA/multiplechoicelistview.html" title="ListView で MultipleChoice モード" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_jzy8V0BkCW0/THbwBCxc_xI/AAAAAAAAAO8/IdqjZF63nwY/s72-c/multiplehoicelistview.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/08/multiplechoicelistview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8HRX8yeyp7ImA9Wx5RGEs.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-5966557226219327634</id><published>2010-08-26T23:30:00.005+09:00</published><updated>2010-08-27T08:03:54.193+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-27T08:03:54.193+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>ListView で SingleChoice モード</title><content type="html">ListView で一つしか選択できないような List を作ることができます．&lt;br /&gt;
&lt;br /&gt;
基本的には ListView と同じ.&lt;br /&gt;
Adapter の作成時に Single Choice ようのレイアウトを設定するのと&lt;br /&gt;
setChoiceMode で ListView.CHOICE_MODE_SINGLEを設定するくらい&lt;br /&gt;
すると RadioButton 付きのリストが表示されます.&lt;br /&gt;
&lt;br /&gt;
というわけで，SingleChoiceList をいじってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;public class SingleChoiceListViewSample extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listview_sample);
    ListView listView = (ListView)findViewById(R.id.ListView);

    // アダプタの作成
    listView.setAdapter(new ArrayAdapter&amp;lt;String&amp;gt;(
        this,
        android.R.layout.simple_list_item_single_choice,
        SIZES)
    );  
        
    // 選択の方式の設定
    listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
  
    // 指定したアイテムがチェックされているかを設定
    listView.setItemChecked(0, true);
    
    // アイテムがクリックされた時に呼び出されるコールバックを登録
    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView&amp;lt;?&amp;gt; parent,
                View view, int position, long id) {
            // クリックされた時の処理
        }
    });
  
    // 現在チェックされているアイテムの position を取得
    listView.getCheckedItemPosition();
  }
  
  // ListView に表示させる文字列
  private static final String[] SIZES = new String[] {
      "XS(eXtra Small)", "S(Small)", "M(Medium)",
　　　"L(Large)", "XL(eXtra Large)"
  };
}
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;XMLリソース&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" 
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"&amp;gt;
  &amp;lt;TextView android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="ListSample" /&amp;gt;
  &amp;lt;ListView 
    android:layout_width="fill_parent"
    android:layout_height="0dip" 
    android:layout_weight="1"
    android:id="@+id/ListView"&amp;gt;
  &amp;lt;/ListView&amp;gt;
&amp;lt;/LinearLayout&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/THbrP-mROzI/AAAAAAAAAO0/DEsZCXGnrNI/s1600/singlechoicelistview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/THbrP-mROzI/AAAAAAAAAO0/DEsZCXGnrNI/s320/singlechoicelistview.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/widget/ListView.html"&gt;http://developer.android.com/intl/ja/reference/android/widget/ListView.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-5966557226219327634?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ih6u1sZ13CcXaZVu-_c2B1cbVCM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ih6u1sZ13CcXaZVu-_c2B1cbVCM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ih6u1sZ13CcXaZVu-_c2B1cbVCM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ih6u1sZ13CcXaZVu-_c2B1cbVCM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/6RlQdj8gkVI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/5966557226219327634/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/08/singlechoicelistview.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/5966557226219327634?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/5966557226219327634?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/6RlQdj8gkVI/singlechoicelistview.html" title="ListView で SingleChoice モード" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_jzy8V0BkCW0/THbrP-mROzI/AAAAAAAAAO0/DEsZCXGnrNI/s72-c/singlechoicelistview.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/08/singlechoicelistview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4CSHc_eCp7ImA9WxFRF00.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-8205934430124703114</id><published>2010-05-01T01:00:00.000+09:00</published><updated>2010-05-01T17:02:49.940+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-01T17:02:49.940+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>XML で Button 変化</title><content type="html">ボタンの変化をXMLで指定するには &lt;b&gt;selector&lt;/b&gt; というのを指定してあげます&lt;br /&gt;
state_pressed が true なら押されている&lt;br /&gt;
state_focused が true ならフォーカスがあたっている&lt;br /&gt;
状態になりそれぞれのイメージを指定します&lt;br /&gt;
&lt;br /&gt;
というわけで, XMLでボタンを変化させてみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;XMLリソース&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;
  &amp;lt;!-- 押されたときの Button --&amp;gt;
  &amp;lt;item android:drawable="@drawable/icon_pressed"
        android:state_pressed="true" /&amp;gt;
  &amp;lt;!-- フォーカスがあたっているときの Button --&amp;gt;
  &amp;lt;item android:drawable="@drawable/icon_focused"
        android:state_focused="true" /&amp;gt;
  &amp;lt;!-- 通常時の Button --&amp;gt;
  &amp;lt;item android:drawable="@drawable/icon" /&amp;gt;
&amp;lt;/selector&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
んで、メインの方はただバックグラウンドに指定するだけ&lt;br /&gt;
XMLで指定してしまってもOK&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;

public class ButtonXMLTest extends Activity {
  Button button;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.buttonxmltest);
    
    button = (Button) findViewById(R.id.Button);
    button.setBackgroundResource(R.drawable.buttonxml);
  }    
}
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
通常時&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9vfZ5yGvRI/AAAAAAAAAOY/1fBtVM5XrUo/s1600/buttonxmltest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9vfZ5yGvRI/AAAAAAAAAOY/1fBtVM5XrUo/s320/buttonxmltest.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ボタンにフォーカスがあたったとき&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9vff4PeZtI/AAAAAAAAAOg/rKN9w6Ock1Y/s1600/buttonxmltest2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9vff4PeZtI/AAAAAAAAAOg/rKN9w6Ock1Y/s320/buttonxmltest2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ボタンが押されたとき&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/S9vfiANjTnI/AAAAAAAAAOo/ihEnoCrkWYw/s1600/buttonxmltest3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/S9vfiANjTnI/AAAAAAAAAOo/ihEnoCrkWYw/s320/buttonxmltest3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/resources/tutorials/views/hello-formstuff.html"&gt;http://developer.android.com/intl/ja/resources/tutorials/views/hello-formstuff.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-8205934430124703114?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nC6_fvvlCJdZ-AkWYi7WyHVC8Rw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nC6_fvvlCJdZ-AkWYi7WyHVC8Rw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nC6_fvvlCJdZ-AkWYi7WyHVC8Rw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nC6_fvvlCJdZ-AkWYi7WyHVC8Rw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/eJiDJr7470E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/8205934430124703114/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/05/xml-button.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/8205934430124703114?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/8205934430124703114?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/eJiDJr7470E/xml-button.html" title="XML で Button 変化" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9vfZ5yGvRI/AAAAAAAAAOY/1fBtVM5XrUo/s72-c/buttonxmltest.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/05/xml-button.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QDQns-eip7ImA9WxFRFEo.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-3348418750182494711</id><published>2010-04-28T03:28:00.000+09:00</published><updated>2010-04-29T03:29:33.552+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-29T03:29:33.552+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SoftBank" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>ソフトバンク、『X06HT HTC Desire』発売開始</title><content type="html">2010年4月27日より、ソフトバンクモバイル初となるAndroid搭載スマートフォン「HTC Desire SoftBank X06HT」が発売されました。&lt;br /&gt;
&lt;br /&gt;
詳しくは&lt;a href="http://www.htc.com/jp/product/x06ht/overview.html"&gt;http://www.htc.com/jp/product/x06ht/overview.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-3348418750182494711?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wh7BfCaqA5KQN79vyuwQb9uZvqw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wh7BfCaqA5KQN79vyuwQb9uZvqw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wh7BfCaqA5KQN79vyuwQb9uZvqw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wh7BfCaqA5KQN79vyuwQb9uZvqw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/oDkaBbJvipw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/3348418750182494711/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/x06ht-htc-desire_29.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/3348418750182494711?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/3348418750182494711?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/oDkaBbJvipw/x06ht-htc-desire_29.html" title="ソフトバンク、『X06HT HTC Desire』発売開始" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/x06ht-htc-desire_29.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04CSHk6fCp7ImA9WxFREkQ.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-490305825234745378</id><published>2010-04-27T01:39:00.000+09:00</published><updated>2010-04-27T01:39:29.714+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-27T01:39:29.714+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>MediaPlayer を使ってみた</title><content type="html">android で mp3, midi などを再生するには&lt;br /&gt;
MediaPlayer を使います&lt;br /&gt;
&lt;br /&gt;
そして drawable/raw を作ってその中にメディアファイルを格納します&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/S9XBfTeksQI/AAAAAAAAAOQ/uqOhKr01K3s/s1600/drawable_raw.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/S9XBfTeksQI/AAAAAAAAAOQ/uqOhKr01K3s/s320/drawable_raw.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
その後, &lt;b&gt;MediaPlayer.create(context, resid);&lt;/b&gt; で作成します&lt;br /&gt;
&lt;br /&gt;
というわけで, MediaPlayer をいじってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MediaPlayerTest extends Activity 
                             implements OnClickListener {
  private MediaPlayer mediaPlayer = null;
  private Button button_Play;
  private Button button_Pause;
  private Button button_Stop;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.soundtest);
    
    button_Play = (Button) findViewById(R.id.Button01);
    button_Play.setOnClickListener(this);
    button_Pause = (Button) findViewById(R.id.Button02);
    button_Pause.setOnClickListener(this);  
    button_Stop = (Button) findViewById(R.id.Button03);
    button_Stop.setOnClickListener(this);  

    // メディアプレイヤーの作成
    mediaPlayer = MediaPlayer.create(this, R.raw.sample);
    
    // ループ再生の設定
    // mediaPlayer.setLooping(true);
  }
  @Override
  public void onClick(View v) {
    if (v == button_Play) {
      // 再生してなかったら
      if (!mediaPlayer.isPlaying()) {
        // MediaPlayerの再生
        mediaPlayer.start();
      }
    } else if (v == button_Pause) {
      // MediaPlayerの一時停止
      mediaPlayer.pause();
    }
    else if (v == button_Stop) {
      // 再生してたら
      if (mediaPlayer.isPlaying()) {
        // MediaPlayerの停止
        mediaPlayer.stop();
        try {
          // MediaPlayerの準備
          mediaPlayer.prepare();
        } catch (Exception e) {}
      }
    }
  }
}
&lt;/pre&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/media/MediaPlayer.html"&gt;http://developer.android.com/intl/ja/reference/android/media/MediaPlayer.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-490305825234745378?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2xF3gmBPddEy8PDTF0u3kvE8yVw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2xF3gmBPddEy8PDTF0u3kvE8yVw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2xF3gmBPddEy8PDTF0u3kvE8yVw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2xF3gmBPddEy8PDTF0u3kvE8yVw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/Ma0cR6cBBqI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/490305825234745378/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/mediaplayer.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/490305825234745378?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/490305825234745378?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/Ma0cR6cBBqI/mediaplayer.html" title="MediaPlayer を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_jzy8V0BkCW0/S9XBfTeksQI/AAAAAAAAAOQ/uqOhKr01K3s/s72-c/drawable_raw.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/mediaplayer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EDSXo5eCp7ImA9WxFREkQ.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-2398122614684155914</id><published>2010-04-27T01:34:00.000+09:00</published><updated>2010-04-27T01:34:38.420+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-27T01:34:38.420+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>ToneGenerator を使ってみた</title><content type="html">ToneGeneratorを使うと簡単にトーンを鳴らせます&lt;br /&gt;
コンストラクタは&lt;br /&gt;
&lt;b&gt;ToneGenerator (int streamType, int volume);&lt;/b&gt;&lt;br /&gt;
第1引数はストリームの種類&lt;br /&gt;
第2引数は音量&lt;br /&gt;
&lt;br /&gt;
んで、&lt;br /&gt;
&lt;b&gt;startTone(int ToneType)&lt;/b&gt; or &lt;b&gt;startTone(int ToneType, int durationMs)&lt;/b&gt;&lt;br /&gt;
で再生します&lt;br /&gt;
後者は再生する時間を指定&lt;br /&gt;
Toneの種類に関してはT&lt;a href="http://developer.android.com/intl/ja/reference/android/media/ToneGenerator.html"&gt;oneGenerator&lt;/a&gt;から&lt;br /&gt;
&lt;br /&gt;
というわけで, ToneGenarator をいじってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.media.AudioManager;
import android.media.ToneGenerator;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ToneGeneratorTest extends Activity {
  ToneGenerator toneGenerator;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tonegeneratortest);

    // ToneGenerator の作成
    toneGenerator = new ToneGenerator(
        AudioManager.STREAM_ALARM,
        ToneGenerator.MAX_VOLUME
    );

    ((Button) findViewById(R.id.Button01))
    .setOnClickListener(new OnClickListener() {
      public void onClick(View v) {
        // Tone再生
        toneGenerator.startTone(ToneGenerator.TONE_CDMA_ABBR_ALERT);
        // toneGenarator.stratTone(ToneGenerator.TONE_CDMA_ABBR_ALERT, 1000);
      }
    });
    ((Button) findViewById(R.id.Button02))
    .setOnClickListener(new OnClickListener() {
      public void onClick(View v) {
        // Tone停止
        toneGenerator.stopTone();
      }
    });
  }
  
  @Override
  public void onDestroy() {
    super.onDestroy();
    
    // ToneGenerator の解放
    toneGenerator.release();
  }
}
&lt;/pre&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/media/ToneGenerator.html"&gt;http://developer.android.com/intl/ja/reference/android/media/ToneGenerator.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/media/AudioManager.html"&gt;http://developer.android.com/intl/ja/reference/android/media/AudioManager.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-2398122614684155914?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/H-2E-tsEzi8Iy5nekgd_oX5VhKU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H-2E-tsEzi8Iy5nekgd_oX5VhKU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/H-2E-tsEzi8Iy5nekgd_oX5VhKU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/H-2E-tsEzi8Iy5nekgd_oX5VhKU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/YMU1r5e3qxI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/2398122614684155914/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/tonegenerator.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/2398122614684155914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/2398122614684155914?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/YMU1r5e3qxI/tonegenerator.html" title="ToneGenerator を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/tonegenerator.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QNQ3w-fSp7ImA9Wx5bFk0.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-4270469801970133097</id><published>2010-04-24T21:36:00.003+09:00</published><updated>2010-11-01T18:56:32.255+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-01T18:56:32.255+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Tab を作ってみた</title><content type="html">Tab を使うには TabHost と TabWidget を使います&lt;br /&gt;
そして TabWidget でTabのコンテンツを表示するのに FrameLayout を使います&lt;br /&gt;
&lt;br /&gt;
Tabのコンテンツとして 任意のViewを表示させるのと, Activityを起動する2種類があるようです&lt;br /&gt;
&lt;br /&gt;
というわけで, Tab を作ってみた&lt;br /&gt;
&lt;br /&gt;
注意するのは id として&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;TabHost は @android:id/tabhost&lt;/li&gt;
&lt;li&gt;TabWidget は @android:id/tabs&lt;/li&gt;
&lt;li&gt;メインの FrameLayout は @android:id/tabcotent&lt;/li&gt;
&lt;/ul&gt;というのを指定してあげます&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;XMLリソース&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@android:id/tabhost" 
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"&amp;gt;
  &amp;lt;LinearLayout 
    android:orientation="vertical"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:padding="5dp"&amp;gt;
    &amp;lt;TabWidget 
      android:id="@android:id/tabs"
      ... /&amp;gt;
    &amp;lt;FrameLayout 
      android:id="@android:id/tabcontent"
      android:padding="5dp"
      ... &amp;gt;
      &amp;lt;LinearLayout
        android:id="@+id/content1" 
        android:orientation="vertical"
        ... &amp;gt;
        &amp;lt;TextView 
          ... /&amp;gt;
      &amp;lt;/LinearLayout&amp;gt;
      &amp;lt;LinearLayout
        android:id="@+id/content2" 
            ・
            ・
            ・
      &amp;lt;/LinearLayout&amp;gt;
    &amp;lt;/FrameLayout&amp;gt;
  &amp;lt;/LinearLayout&amp;gt;
&amp;lt;/TabHost&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
また, Tab が切り替わったときのアイコンの切り替えもXMLで指定できます&lt;br /&gt;
以下のように作ってres/drawable に置きます&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;selector xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;
  &amp;lt;!-- 選択されたときの画像 --&amp;gt;
  &amp;lt;item android:drawable="@android:drawable/star_big_on"
        android:state_selected="true" /&amp;gt;
  &amp;lt;!-- 選択されていないときの画像 --&amp;gt;
  &amp;lt;item android:drawable="@android:drawable/star_big_off" /&amp;gt;
&amp;lt;/selector&amp;gt;
&lt;/pre&gt;んで, 本体&lt;br /&gt;
ここで Activity でなく TabActivity というのを継承させます&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.TabActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.TabHost.OnTabChangeListener;

public class TabTest extends TabActivity
                     implements OnTabChangeListener {
  private static final String TAG[] = {
    "tag1", "tag2", "tag3",
  };
  private static final String LABEL[] = {
    "Label1", "Label2", "Label3",
  };

  TabHost tabHost;
  TabHost.TabSpec spec;
  TextView textView;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.tabtest);
    textView = new TextView(this);
    
    // TabHost の取得
    tabHost = getTabHost();
    // Tab が切り替わったときに呼ばれるコールバックを登録
    tabHost.setOnTabChangedListener(this);

    /********** Tab その1 **********/
    // TabSpec の作成
    spec = tabHost.newTabSpec(TAG[0]);
    // インジケーターの設定
    spec.setIndicator(LABEL[0]);
    // Tab のコンテンツの設定
    spec.setContent(R.id.content1);
    // TabHost に Tab を追加
    tabHost.addTab(spec);

    /********** Tab その2 **********/
    spec = tabHost.newTabSpec(TAG[1])
    // アイコン付きインジケーターの設定
    .setIndicator(LABEL[1], getResources().getDrawable(R.drawable.icon))
    .setContent(R.id.content2);
    tabHost.addTab(spec);

    textView.setText("Text");
    textView.setBackgroundColor(Color.DKGRAY);
    textView.setTextColor(Color.RED);
    textView.setGravity(Gravity.CENTER);

    /********** Tab その3 **********/
    // 起動したいアクティビティのIntent作成
    Intent intent = new Intent().setClass(this, TabTest.class);
    
    spec = tabHost.newTabSpec(TAG[2])
    // インジケーターに任意のビューを設定
    .setIndicator(textView)
    // Intent を設定
    .setContent(intent);
    tabHost.addTab(spec);

    // 現在の Tab を設定
    tabHost.setCurrentTab(0);
  }
  // Tab が切り替わったときの動作 (引数はTag)
  public void onTabChanged(String tabId) {
    if (tabId == TAG[2])
      textView.setBackgroundColor(Color.LTGRAY);
    else
      textView.setBackgroundColor(Color.DKGRAY);
  }
}
&lt;/pre&gt;これでOK!&lt;br /&gt;
&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9Llh69PlgI/AAAAAAAAANw/h_w-2PAhVgc/s1600/tabtest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9Llh69PlgI/AAAAAAAAANw/h_w-2PAhVgc/s320/tabtest.png" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9Llmke4nlI/AAAAAAAAAN4/v5s94F8ZvkA/s1600/tabtest2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9Llmke4nlI/AAAAAAAAAN4/v5s94F8ZvkA/s320/tabtest2.png" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9LlpDUK2-I/AAAAAAAAAOA/Ty3L7e0zcOQ/s1600/tabtest3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9LlpDUK2-I/AAAAAAAAAOA/Ty3L7e0zcOQ/s320/tabtest3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
今回は Intent で自分自身を読んでます&lt;br /&gt;
当たり前ですが何回も呼ぶとオーバーフローして落ちます&lt;br /&gt;
&lt;br /&gt;
Tab で TabActivity を呼べば多段の Tab ができそう!&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/resources/tutorials/views/hello-tabwidget.html"&gt;http://developer.android.com/intl/ja/resources/tutorials/views/hello-tabwidget.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/widget/TabHost.html"&gt;http://developer.android.com/intl/ja/reference/android/widget/TabHost.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/widget/TabWidget.html"&gt;http://developer.android.com/intl/ja/reference/android/widget/TabWidget.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-4270469801970133097?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VWhiw4fJzK8K74_HunmhsIqNgX0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VWhiw4fJzK8K74_HunmhsIqNgX0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VWhiw4fJzK8K74_HunmhsIqNgX0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VWhiw4fJzK8K74_HunmhsIqNgX0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/MvgPGfDkYW8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/4270469801970133097/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/tab.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/4270469801970133097?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/4270469801970133097?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/MvgPGfDkYW8/tab.html" title="Tab を作ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_jzy8V0BkCW0/S9Llh69PlgI/AAAAAAAAANw/h_w-2PAhVgc/s72-c/tabtest.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/tab.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIFQXs8fip7ImA9WxFREE4.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-5854727061672931768</id><published>2010-04-24T00:44:00.001+09:00</published><updated>2010-04-24T00:45:10.576+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-24T00:45:10.576+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>HorizontalScrollView を使ってみた</title><content type="html">横方向にスクロールさせるには&lt;br /&gt;
HorizontalScrollView を使います&lt;br /&gt;
&lt;pre&gt;java.lang.Object
  ↳ android.view.View
    ↳ android.view.ViewGroup
      ↳ android.widget.FrameLayout
        ↳ android.widget.HorizontalScrollView
&lt;/pre&gt;&lt;br /&gt;
その名の通り ScrollView の横バージョンです&lt;br /&gt;
&lt;br /&gt;
HorizontalScrollView は ScrollView と同様一つしか子ビューを持てないので&lt;br /&gt;
LineaLayout などにまとめて入れてやります&lt;br /&gt;
&lt;br /&gt;
というわけで, HorizontalScrollView をいじってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;XMLリソース&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;HorizontalScrollView
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" 
  android:id="@+id/HorizontalScrollView"&amp;gt;
  &amp;lt;LinearLayout 
    android:id="@+id/LinearLayout"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"&amp;gt;
    &amp;lt;TextView 
      android:id="@+id/TextView" 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" 
      android:text="HorizontalScrollViewTest"&amp;gt;
    &amp;lt;/TextView&amp;gt;
        ・
        ・
        ・
  &amp;lt;/LinearLayout&amp;gt;
&amp;lt;/HorizontalScrollView&amp;gt;
&lt;/pre&gt;アクティビティー側で setContentView で設定&lt;br /&gt;
&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;span id="goog_1533297240"&gt;&lt;/span&gt;&lt;span id="goog_1533297241"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/S9HALy_NyEI/AAAAAAAAANg/SgXPddDuwWU/s1600/horizontalscrollviewtest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/S9HALy_NyEI/AAAAAAAAANg/SgXPddDuwWU/s320/horizontalscrollviewtest.png" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/S9HAQieDjvI/AAAAAAAAANo/S5RsdanNz50/s1600/horizontalscrollviewtest2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/S9HAQieDjvI/AAAAAAAAANo/S5RsdanNz50/s320/horizontalscrollviewtest2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
一番下にスクロールバーが表示されています&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/widget/HorizontalScrollView.html"&gt;http://developer.android.com/intl/ja/reference/android/widget/HorizontalScrollView.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-5854727061672931768?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NWLGKU9wuzsPLYHaLsmhzRBX9CQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NWLGKU9wuzsPLYHaLsmhzRBX9CQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NWLGKU9wuzsPLYHaLsmhzRBX9CQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NWLGKU9wuzsPLYHaLsmhzRBX9CQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/CaOIAzytvuI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/5854727061672931768/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/horizontalscrollview.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/5854727061672931768?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/5854727061672931768?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/CaOIAzytvuI/horizontalscrollview.html" title="HorizontalScrollView を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_jzy8V0BkCW0/S9HALy_NyEI/AAAAAAAAANg/SgXPddDuwWU/s72-c/horizontalscrollviewtest.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/horizontalscrollview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YNR34zeyp7ImA9WxFSF0o.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-7058834110636839084</id><published>2010-04-20T22:46:00.000+09:00</published><updated>2010-04-20T22:46:36.083+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-20T22:46:36.083+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>XML で Menu</title><content type="html">Menu を XML で作成したいときは&lt;br /&gt;
/res に menu というフォルダを作成し、その中にxmlファイルを作成します&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/S82uLxUqc-I/AAAAAAAAANY/jW3Wyx953bQ/s1600/res_menu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/S82uLxUqc-I/AAAAAAAAANY/jW3Wyx953bQ/s320/res_menu.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
XML は以下のようにすればOKです&lt;br /&gt;
submenu を作りたいときは item の中に menu を入れてあげます。&lt;br /&gt;
&lt;br /&gt;
XML リソース&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;
  &amp;lt;item 
    android:id="@+id/menu_item01" 
    android:title="Menu01"/&amp;gt;
  &amp;lt;group 
    android:id="@+id/menu_group01"&amp;gt;
    &amp;lt;item 
      android:icon="@drawable/icon" 
      android:id="@+id/menu_item02" 
      android:title="Menu02"/&amp;gt;
  &amp;lt;/group&amp;gt;
  &amp;lt;item 
    android:id="@+id/menu_item03" 
    android:title="Menu03"&amp;gt;
    &amp;lt;menu&amp;gt;
      &amp;lt;item 
        android:id="@+id/submenu_item01" 
        android:title="Sub_Menu01"/&amp;gt;
      &amp;lt;item 
        android:id="@+id/submenu_item02" 
        android:title="Sub_Menu02/"&amp;gt;
    &amp;lt;/menu&amp;gt;
  &amp;lt;/item&amp;gt;
&amp;lt;/menu&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
そして, &lt;br /&gt;
MenuInflater というクラスを使ってXMLを取得します&lt;br /&gt;
&lt;br /&gt;
サンプルプログラム&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class MenuXMLTest extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }

  // Option Menu が最初に表示される時に1度だけ呼び出される
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    // MenuInflater の取得
    MenuInflater menuInflater = getMenuInflater();
    // MenuInflater から XML の取得  
    menuInflater.inflate(R.menu.menutest, menu);
    return true;
  }
}
&lt;/pre&gt;&lt;br /&gt;
あとは普通に onOptionsItemSelected(MenuItem item) などをオーバーライドすればアイテムが選択された際の処理などもできます&lt;br /&gt;
&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_jzy8V0BkCW0/S82uEXdVJfI/AAAAAAAAANI/oBCMOAMd1W0/s1600/menutest_xml.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_jzy8V0BkCW0/S82uEXdVJfI/AAAAAAAAANI/oBCMOAMd1W0/s320/menutest_xml.png" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/S82uGvRaRJI/AAAAAAAAANQ/9hc0y27F4fo/s1600/menutest_xml2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/S82uGvRaRJI/AAAAAAAAANQ/9hc0y27F4fo/s320/menutest_xml2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/guide/topics/resources/available-resources.html#menus"&gt;http://developer.android.com/intl/ja/guide/topics/resources/available-resources.html#menus&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/view/MenuInflater.html"&gt;http://developer.android.com/intl/ja/reference/android/view/MenuInflater.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-7058834110636839084?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GogyUaEZ6zn_tgFJxEpnqth-yK4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GogyUaEZ6zn_tgFJxEpnqth-yK4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GogyUaEZ6zn_tgFJxEpnqth-yK4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GogyUaEZ6zn_tgFJxEpnqth-yK4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/WMD1seHINf0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/7058834110636839084/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/xml-menu.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/7058834110636839084?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/7058834110636839084?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/WMD1seHINf0/xml-menu.html" title="XML で Menu" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_jzy8V0BkCW0/S82uLxUqc-I/AAAAAAAAANY/jW3Wyx953bQ/s72-c/res_menu.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/xml-menu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAEQHYyeCp7ImA9WxFSFE4.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-5947605483687284078</id><published>2010-04-17T01:18:00.000+09:00</published><updated>2010-04-17T01:18:21.890+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-17T01:18:21.890+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Xperia" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Eclipse で Xperia用アプリ開発準備</title><content type="html">EclipseでXperia用のアプリを開発するためには、&lt;br /&gt;
&lt;br /&gt;
まず、以下のソニーエリクソンのページ(&lt;a href="http://developer.sonyericsson.com/wportal/devworld/downloads"&gt;http://developer.sonyericsson.com/wportal/devworld/downloads&lt;/a&gt;)&lt;br /&gt;
から, Android の部分にある [All Android Downloads] をクリックし&lt;br /&gt;
『Sony Ericsson Xperia X10 add-on for the Android SDK』というのをダウンロード&lt;br /&gt;
&lt;br /&gt;
ダウンロードしたファイルを解凍して [Android SDK]を保存してあるディレクトリを開いて、その中にある [add-ons]ディレクトリの中に置く&lt;br /&gt;
&lt;br /&gt;
そしたら、次は Eclipse を開く&lt;br /&gt;
&lt;br /&gt;
普通のAVDの作成と同じで&lt;br /&gt;
[Window] -&amp;gt; [Android SDK and AVD Manager] 移動して [New] をクリック&lt;br /&gt;
すると [Target] に『X10 (Sony Erricsson ...』というのがあるのでそれを選択&lt;br /&gt;
&lt;br /&gt;
Skin も『X10』を選択(たぶんデフォルトでなってる)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8iNRi_7R6I/AAAAAAAAAMo/OXJNswUNjOs/s1600/Create_AVD_Xperia.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8iNRi_7R6I/AAAAAAAAAMo/OXJNswUNjOs/s320/Create_AVD_Xperia.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
んで [Create AVD]&lt;br /&gt;
&lt;br /&gt;
そして、プロジェクトの作成&lt;br /&gt;
&lt;br /&gt;
Android 1.6 用のものがあるならわざわざ新しいのを作らなくても大丈夫&lt;br /&gt;
&lt;br /&gt;
こちらも [Target Name] のところに『X10』が現れるので選択&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_jzy8V0BkCW0/S8iNUzzk5jI/AAAAAAAAAMw/cl8reS2nCIw/s1600/Android_Xperia_Project+.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_jzy8V0BkCW0/S8iNUzzk5jI/AAAAAAAAAMw/cl8reS2nCIw/s320/Android_Xperia_Project+.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
これでOK!&lt;br /&gt;
&lt;br /&gt;
そして、[Run Configurations] で Tagetをさっき作った『X10』のAVDを選んで実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S8iNYVInSOI/AAAAAAAAAM4/vsVHPN1kzno/s1600/AVD_Xperia.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S8iNYVInSOI/AAAAAAAAAM4/vsVHPN1kzno/s320/AVD_Xperia.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S8iNcTGLQ3I/AAAAAAAAANA/Iftj1-MG040/s1600/HelloXperia.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S8iNcTGLQ3I/AAAAAAAAANA/Iftj1-MG040/s320/HelloXperia.png" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
やっぱ Xperia かっこいいですね!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-5947605483687284078?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BGi39dXh_rCq4-VK5VD-nkt738U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BGi39dXh_rCq4-VK5VD-nkt738U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BGi39dXh_rCq4-VK5VD-nkt738U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BGi39dXh_rCq4-VK5VD-nkt738U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/yRsR-r_aSEg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/5947605483687284078/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/eclipse-xperia.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/5947605483687284078?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/5947605483687284078?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/yRsR-r_aSEg/eclipse-xperia.html" title="Eclipse で Xperia用アプリ開発準備" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8iNRi_7R6I/AAAAAAAAAMo/OXJNswUNjOs/s72-c/Create_AVD_Xperia.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/eclipse-xperia.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8CQHY4cSp7ImA9WxFSEkg.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-3675996807303660814</id><published>2010-04-14T23:03:00.001+09:00</published><updated>2010-04-14T23:04:21.839+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-14T23:04:21.839+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>XML で Animation</title><content type="html">Animation を XML で作成したいときは&lt;br /&gt;
&lt;br /&gt;
/res に anim というフォルダを作成し、その中にxmlファイルを作成します&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8XLEs5G30I/AAAAAAAAAL0/vCKRV-asSdU/s1600/res_anim.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8XLEs5G30I/AAAAAAAAAL0/vCKRV-asSdU/s320/res_anim.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
アニメーションの要素としては以下のようなものがあります&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;set&lt;/li&gt;
&lt;li&gt;alpha&lt;/li&gt;
&lt;li&gt;scale&lt;/li&gt;
&lt;li&gt;translate&lt;/li&gt;
&lt;li&gt;rotate&lt;/li&gt;
&lt;li&gt;interpolator&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
サイズを指定するものでViewサイズに対する比率を指定できるわけですが&lt;br /&gt;
以下の2種類で指定します&lt;br /&gt;
&lt;pre&gt;%   : View のサイズに対する比率
%p  : 親View のサイズに対する比率
&lt;/pre&gt;&lt;br /&gt;
というわけで、アニメーションを作ってみた&lt;br /&gt;
&lt;br /&gt;
下からズームインしてくるアニメーション&lt;br /&gt;
&lt;b&gt;zoom_in_from_bottom.xml&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;set xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;
  &amp;lt;scale
    android:fromXScale="0.0"
    android:toXScale="1.0"
    android:fromYScale="0.0"
    android:toYScale="1.0"
    android:pivotX="50%"
    android:duration="1000"&amp;gt;
  &amp;lt;/scale&amp;gt;
  &amp;lt;translate
    android:fromYDelta="100%p"
    android:toYDelta="0.0"
    android:duration="1000"&amp;gt;
  &amp;lt;/translate&amp;gt;
&amp;lt;/set&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
こんな感じで作成します&lt;br /&gt;
&lt;br /&gt;
作成したら&lt;br /&gt;
AnimationUtilsクラスの&lt;br /&gt;
&lt;b&gt;loadAnimation(context, id)&lt;/b&gt; メソッドを使ってアニメーションを取得&lt;br /&gt;
&lt;br /&gt;
例えば&lt;br /&gt;
AnimationUtils.loadAnimation(context, R.anim.zoom_in_from_bottom);&lt;br /&gt;
というふうにすれば取得できます!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/guide/topics/resources/available-resources.html#animation"&gt;http://developer.android.com/intl/ja/guide/topics/resources/available-resources.html#animation&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/view/animation/AnimationUtils.html"&gt;http://developer.android.com/intl/ja/reference/android/view/animation/AnimationUtils.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-3675996807303660814?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lh3UWEPdcH1P0OXP35d4vjdo8Eg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lh3UWEPdcH1P0OXP35d4vjdo8Eg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lh3UWEPdcH1P0OXP35d4vjdo8Eg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lh3UWEPdcH1P0OXP35d4vjdo8Eg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/sjcRwD-rHEE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/3675996807303660814/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/xml-animation.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/3675996807303660814?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/3675996807303660814?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/sjcRwD-rHEE/xml-animation.html" title="XML で Animation" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8XLEs5G30I/AAAAAAAAAL0/vCKRV-asSdU/s72-c/res_anim.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/xml-animation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08CRX49eyp7ImA9WxFSEkk.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-2852052915140442615</id><published>2010-04-14T21:55:00.001+09:00</published><updated>2010-04-14T21:57:44.063+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-14T21:57:44.063+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>XML でカスタムView</title><content type="html">既存の View を拡張して新たに自分だけの View を作成したいときは&lt;br /&gt;
&lt;br /&gt;
まず、res/values に attrs.xml を作成します&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/S8W66bSQ1YI/AAAAAAAAALk/cv7cGjhd3EA/s1600/res_values_attrs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/S8W66bSQ1YI/AAAAAAAAALk/cv7cGjhd3EA/s320/res_values_attrs.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;attrs.xml&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;resources&amp;gt;
 &amp;lt;!-- name : custom view class name --&amp;gt;
  &amp;lt;declare-styleable name="CustomView"&amp;gt;
    &amp;lt;attr name="text" format="string" /&amp;gt;
    &amp;lt;attr name="color" format="color" /&amp;gt;
    &amp;lt;attr name="size" format="dimension" /&amp;gt;
  &amp;lt;/declare-styleable&amp;gt;
&amp;lt;/resources&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
declare-styleable の name属性は作成するカスタムビューのクラス名を指定する&lt;br /&gt;
&lt;br /&gt;
次に、レイアウトを作成します&lt;br /&gt;
&lt;br /&gt;
xmlns:app="http://schemas.android.com/apk/res/パッケージの名前"&lt;br /&gt;
というのを追加します&lt;br /&gt;
app は勝手につけた名前&lt;br /&gt;
&lt;br /&gt;
attrs.xml で作成した属性を指定します&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;XMLリソース&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res/androidtest.app"
  android:id="@+id/LinearLayout"
  android:layout_height="fill_parent"
  android:layout_width="fill_parent"&amp;gt; 
  &amp;lt;androidtest.app.CustomView
    android:id="@+id/CustomView" 
    android:layout_height="fill_parent"
    android:layout_width="fill_parent" 
    app:text="CustomViewTest" 
    app:color="#FFFF0000"
    app:size="32sp" /&amp;gt;
&amp;lt;/LinearLayout&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
そしたら、カスタムビューの作成&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム(CustomView)&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import androidtest.app.R;

public class CustomView extends View {
  String str;
  int color;
  int size;

  public CustomView(Context context, AttributeSet attrs) {
    super(context, attrs);

    // styleable から TypedArray の取得
    TypedArray tArray = 
      context.obtainStyledAttributes(
        attrs,
        R.styleable.CustomView
      );
  
    // TypedArray から String を取得
    str = tArray.getString(R.styleable.CustomView_text);
    // TypedArray から Color を取得
    color = tArray.getColor(R.styleable.CustomView_color, 0xFFFFFFFF);
    // TypedArray から Dimension を取得
    size = tArray.getDimensionPixelSize(R.styleable.CustomView_size, 12);
  }

  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Paint paint = new Paint();
    paint.setColor(color);
    paint.setTextSize(size);
    canvas.drawText(str, 32, 64, paint);
  }
}
&lt;/pre&gt;&lt;br /&gt;
Activity では setContentView で作成した layout を指定するだけ&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム(Activity)&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.os.Bundle;
import androidtest.app.R;

public class CustomViewTest extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.customviewtest);
  }
}
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8W6_BscsbI/AAAAAAAAALs/kK4SZv5aeJU/s1600/customviewtest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8W6_BscsbI/AAAAAAAAALs/kK4SZv5aeJU/s320/customviewtest.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/guide/topics/resources/available-resources.html#customresources"&gt;http://developer.android.com/intl/ja/guide/topics/resources/available-resources.html#customresources&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-2852052915140442615?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0_E1zrwK9Xb7BqXGzA3loqdk9kI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0_E1zrwK9Xb7BqXGzA3loqdk9kI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0_E1zrwK9Xb7BqXGzA3loqdk9kI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0_E1zrwK9Xb7BqXGzA3loqdk9kI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/M0mKIl_1Y4c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/2852052915140442615/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/xml-customview.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/2852052915140442615?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/2852052915140442615?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/M0mKIl_1Y4c/xml-customview.html" title="XML でカスタムView" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_jzy8V0BkCW0/S8W66bSQ1YI/AAAAAAAAALk/cv7cGjhd3EA/s72-c/res_values_attrs.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/xml-customview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ANSH8zeyp7ImA9WxFSEEo.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-8725645400469961109</id><published>2010-04-12T21:36:00.002+09:00</published><updated>2010-04-12T21:36:39.183+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-12T21:36:39.183+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>ToggleButton を使ってみた</title><content type="html">ToggleButton は&lt;br /&gt;
&lt;pre&gt;java.lang.Object
  ↳ android.view.View
    ↳ android.widget.TextView
      ↳ android.widget.Button
        ↳ android.widget.CompoundButton
          ↳ android.widget.ToggleButton
&lt;/pre&gt;を使います&lt;br /&gt;
&lt;br /&gt;
というわけで、ToggleButton を使ってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.ToggleButton;

public class ToggleButtonTest extends Activity {
  ToggleButton toggleButton;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.togglebuttontest);
  
    toggleButton = (ToggleButton) findViewById(R.id.ToggleButton01);
  
    // ToggleButton が On のときのテキストを設定
    toggleButton.setTextOn("Toggle ON");
    // ToggleButton が Off のときのテキストを設定
    toggleButton.setTextOff("Toggle OFF");
  
    // ToggleButton が On かどうかを設定
    toggleButton.setChecked(true);
  
    // ToggleButton が On かどうかを取得
    boolean checked = toggleButton.isChecked(); 
  }
}
&lt;/pre&gt;&lt;br /&gt;
XMLリソースで設定もできます&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;XMLリソース&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;ToggleButton
  android:id="@+id/ToggleButton"
  android:layout_height="wrap_content"
  android:layout_width="wrap_content"
  android:textOff="Toggle Off"
  android:textOn="Toggle On"&amp;gt;
&amp;lt;/ToggleButton&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S7yFIHrkCMI/AAAAAAAAAKU/1ImZLZkZc0g/s1600/togglebuttontest_off.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S7yFIHrkCMI/AAAAAAAAAKU/1ImZLZkZc0g/s320/togglebuttontest_off.png" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/S7yFJqwrauI/AAAAAAAAAKc/EAzG3cdxpXk/s1600/togglebuttontest_on.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/S7yFJqwrauI/AAAAAAAAAKc/EAzG3cdxpXk/s320/togglebuttontest_on.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span id="goog_497069214"&gt;&lt;/span&gt;&lt;span id="goog_497069215"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/widget/ToggleButton.html"&gt;http://developer.android.com/intl/ja/reference/android/widget/ToggleButton.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-8725645400469961109?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cW3ES_AsYsCv8vBIaf5XVEx7ONE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cW3ES_AsYsCv8vBIaf5XVEx7ONE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cW3ES_AsYsCv8vBIaf5XVEx7ONE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cW3ES_AsYsCv8vBIaf5XVEx7ONE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/O8eQ_A2zZo0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/8725645400469961109/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/togglebutton1.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/8725645400469961109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/8725645400469961109?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/O8eQ_A2zZo0/togglebutton1.html" title="ToggleButton を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_jzy8V0BkCW0/S7yFIHrkCMI/AAAAAAAAAKU/1ImZLZkZc0g/s72-c/togglebuttontest_off.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/togglebutton1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcHQ3gzfCp7ImA9WxFTGUg.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-8809785712661596505</id><published>2010-04-11T01:28:00.001+09:00</published><updated>2010-04-11T11:30:32.684+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-11T11:30:32.684+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>いろいろな AlertDialog</title><content type="html">AlertDialog.Builderクラスを使っていろいろな AlertDialog を作ってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class AlertDialogTest2 extends Activity implements View.OnClickListener {
  AlertDialog.Builder alertDialogBuilder;
  Button button[];

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.alertdialogtest2);

    button = new Button[3];
    for (int i = 0; i &amp;lt; 3; i++) { d.Button01 + i);
      button[i].setOnClickListener(this);
    }
  }

  public void onClick(View v) {
    if (v == button[0]) {
      setEditAlertDialog();
    } else if (v == button[1]) {
      setSingleChoiceDialog();
    } else if (v == button[2]) {
       setMultiChoiceDialog();
    }
  }

  /* AlertDialog(EditText) */
  public void setEditAlertDialog() {
    EditText editText = new EditText(this);
    editText.setText("Please fill your name!");

    alertDialogBuilder = new AlertDialog.Builder(this);
    alertDialogBuilder.setTitle("EditTextDialog");

    // AlertDialog に View を設定
    alertDialogBuilder.setView(editText);

    // Positive Button を設定
    alertDialogBuilder.setPositiveButton(
      "Positive", 
      new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
          // Positive Button がクリックされた時の動作
        }
      }
    );
    alertDialogBuilder.show();
  }
 
  /* SingleChoiceDialog */
  public void setSingleChoiceDialog() {
    // 表示させるアイテム名
    final String[] str_items = {
      "One",
      "Two",
      "Three"
    };

    alertDialogBuilder = new AlertDialog.Builder(this);
    alertDialogBuilder.setTitle("SingleChoiceDialog");

    // 初めに選ばれているアイテム
    final int default_item = 0;

    // SingleChoiceDialog の作成
    alertDialogBuilder.setSingleChoiceItems(
      str_items, 
      default_item,
      new OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
          // アイテムが選ばれたときの動作
        }
      }
    );
    // Positive Button を設定
    alertDialogBuilder.setPositiveButton(
      "Positive", 
      new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
          // Positive Button がクリックされた時の動作
        }
      }
    );
    alertDialogBuilder.show();
  }

  /* MultiChoiceDialog */
  public void setMultiChoiceDialog() {
    // 表示させるアイテム名
    final String[] str_items = {
      "Red",
      "Green",
      "Blue"
    };
    // 各アイテムがチェックされている状態かどうか
    final boolean[] flag_items = {
      false,
      true,
      false
    };

    alertDialogBuilder = new AlertDialog.Builder(this);
    alertDialogBuilder.setTitle("MultiChoiceDialog");

    // MultiChoiceDialog の作成
    alertDialogBuilder.setMultiChoiceItems(
      str_items, 
      flag_items,
      new OnMultiChoiceClickListener() {
        public void onClick(
            DialogInterface dialog, 
            int which, 
            boolean isChecked) {
          // アイテムが選ばれたときの動作
        }
      }
    );
    // Positive Button を設定
    alertDialogBuilder.setPositiveButton(
      "Positive", 
      new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
          // Positive Button がクリックされた時の動作
        }
      }
    );
    alertDialogBuilder.show();
  }
}
&lt;/pre&gt;プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
AlertDialog(EditText)&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8EzqHIQjhI/AAAAAAAAALM/kA8mTjwEfx4/s1600/alertdialog(edittext).png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8EzqHIQjhI/AAAAAAAAALM/kA8mTjwEfx4/s320/alertdialog(edittext).png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
SingleChoiceDialog&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8Ezsf3HSNI/AAAAAAAAALU/UaLDgAPUZso/s1600/singlechoicedialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8Ezsf3HSNI/AAAAAAAAALU/UaLDgAPUZso/s320/singlechoicedialog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
MultiChoiceDialog&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_jzy8V0BkCW0/S8Ezuyfr6iI/AAAAAAAAALc/GqcbqKjrmaI/s1600/multichoicedialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_jzy8V0BkCW0/S8Ezuyfr6iI/AAAAAAAAALc/GqcbqKjrmaI/s320/multichoicedialog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/app/AlertDialog.html"&gt;http://developer.android.com/intl/ja/reference/android/app/AlertDialog.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/app/AlertDialog.Builder.html"&gt;http://developer.android.com/intl/ja/reference/android/app/AlertDialog.Builder.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-8809785712661596505?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ubVl561k1lmR0hTi_u7PBfwAk6k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ubVl561k1lmR0hTi_u7PBfwAk6k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ubVl561k1lmR0hTi_u7PBfwAk6k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ubVl561k1lmR0hTi_u7PBfwAk6k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/CfQ1XNoEbc0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/8809785712661596505/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/alertdialog.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/8809785712661596505?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/8809785712661596505?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/CfQ1XNoEbc0/alertdialog.html" title="いろいろな AlertDialog" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_jzy8V0BkCW0/S8EzqHIQjhI/AAAAAAAAALM/kA8mTjwEfx4/s72-c/alertdialog(edittext).png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/alertdialog.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08CSXg-cCp7ImA9WxFTGUw.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-3885115774560860344</id><published>2010-04-11T01:09:00.001+09:00</published><updated>2010-04-11T01:11:08.658+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-11T01:11:08.658+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Spannable で文字のマークアップ</title><content type="html">Spannable はテキストをマークアップするためのインターフェースです&lt;br /&gt;
&lt;br /&gt;
CharacterStyleなどのクラスを使って文字列の一部を&lt;br /&gt;
下線を引いたり、下付き文字にしたり、&lt;br /&gt;
上付き文字にしたり、URLを付けたり...&lt;br /&gt;
と様々なことができます&lt;br /&gt;
&lt;br /&gt;
CharacterStyle のサブクラスには&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;UnderlineSpan&lt;/li&gt;
&lt;li&gt;SubscriptSpan&lt;/li&gt;
&lt;li&gt;SuperscriptSpan&lt;/li&gt;
&lt;li&gt;URLSpan&lt;/li&gt;
&lt;li&gt;ScaleXSpan&lt;/li&gt;
&lt;li&gt;RelativeSizeSpan&lt;/li&gt;
etc... &lt;/ul&gt;といろいろあります&lt;br /&gt;
&lt;br /&gt;
というわけで, Spannable でテキストをいじってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.os.Bundle;
import android.text.Spannable;
import android.text.Spannable.Factory;
import android.text.style.RelativeSizeSpan;
import android.text.style.ScaleXSpan;
import android.text.style.SubscriptSpan;
import android.text.style.SuperscriptSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class SpannableTest extends Activity {
  Spannable spannable;

  UnderlineSpan underline;
  SubscriptSpan subscript;
  SuperscriptSpan superscript;
  URLSpan url;
  ScaleXSpan scaleX;
  RelativeSizeSpan relative;

  TextView textView[];

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.spannabletest);

    textView = new TextView[4];
    for (int i = 0; i &amp;lt; 4; i++) {
      textView[i] = (TextView) findViewById(R.id.TextView01 + i);
    }

    // UnderlineSpan
    underline = new UnderlineSpan();
    // SubscriptSpan
    subscript = new SubscriptSpan();
    // SuperscriptSpan
    superscript = new SuperscriptSpan();
    // URLSpan
    url = new URLSpan("http://weide-dev.blogspot.com/");
    // ScaleXSpan
    scaleX = new ScaleXSpan(0.5f);
    // RelativeSizeSpan
    relative = new RelativeSizeSpan(0.5f);

    // Factory の取得
    Factory factory = Spannable.Factory.getInstance();

    /* アンダーラインが引かれた文字列 */
    // Spannable の取得
    spannable = factory.newSpannable(textView[0].getText());
    // 0からテキストの長さ分まで下線を引く
    spannable.setSpan(
        underline,
        0,
        textView[0].getText().length(),
        spannable.getSpanFlags(underline)
    );
    // TextView にテキストを設定
    textView[0].setText(spannable, TextView.BufferType.SPANNABLE);

    /* 後ろ4文字が下付きの文字列 */
    spannable = factory.newSpannable(textView[1].getText());
    // 後ろ4文字を下付き文字にする
    spannable.setSpan(
        subscript,
        textView[1].getText().length() - 4,
        textView[1].getText().length(),
        spannable.getSpanFlags(subscript)
    );
    // 後ろ4文字のXのスケールを0.5倍する
    spannable.setSpan(
        scaleX,
        textView[1].getText().length() - 4,
        textView[1].getText().length(),
        spannable.getSpanFlags(scaleX)
    );
    textView[1].setText(spannable, TextView.BufferType.SPANNABLE);

    /* 後ろ4文字が上付きの文字列 */
    spannable = factory.newSpannable(textView[2].getText());
    // 後ろ4文字を上付き文字にする
    spannable.setSpan(
        superscript,
        textView[2].getText().length() - 4,
        textView[2].getText().length(),
        spannable.getSpanFlags(superscript)
    );
    // 後ろ4文字のサイズを0.5倍する
    spannable.setSpan(
        relative,
        textView[2].getText().length() - 4,
        textView[2].getText().length(),
        spannable.getSpanFlags(relative)
    );
    textView[2].setText(spannable, TextView.BufferType.SPANNABLE);

    /* URL文字列 */
    spannable = factory.newSpannable(textView[3].getText());
    // 0からテキストの長さ分までURLタイプにする
    spannable.setSpan(
        url,
        0,
        textView[3].getText().length(),
        spannable.getSpanFlags(url)
    );
    textView[3].setText(spannable, TextView.BufferType.SPANNABLE);
    textView[3].setOnClickListener(new OnClickListener() {
      public void onClick(View v) {
        // URLを開く
        url.onClick(textView[3]);
      }
    });
  }
}
&lt;/pre&gt;プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S8CiSLd8KGI/AAAAAAAAALE/d6NBmESBTv4/s1600/spannabletest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S8CiSLd8KGI/AAAAAAAAALE/d6NBmESBTv4/s320/spannabletest.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/text/Spannable.html"&gt;http://developer.android.com/intl/ja/reference/android/text/Spannable.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/text/style/CharacterStyle.html"&gt;http://developer.android.com/intl/ja/reference/android/text/style/CharacterStyle.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-3885115774560860344?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xNhQ8UkDIyo_LjdFwyEDi429xK0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xNhQ8UkDIyo_LjdFwyEDi429xK0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xNhQ8UkDIyo_LjdFwyEDi429xK0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xNhQ8UkDIyo_LjdFwyEDi429xK0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/1Ksf0C3ZbjM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/3885115774560860344/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/spannable.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/3885115774560860344?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/3885115774560860344?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/1Ksf0C3ZbjM/spannable.html" title="Spannable で文字のマークアップ" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_jzy8V0BkCW0/S8CiSLd8KGI/AAAAAAAAALE/d6NBmESBTv4/s72-c/spannabletest.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/spannable.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cBSHs4cSp7ImA9WxFTGUg.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-8009994426796420637</id><published>2010-04-08T23:45:00.000+09:00</published><updated>2010-04-11T10:57:39.539+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-11T10:57:39.539+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>Menu を使ってみた</title><content type="html">Menu は&lt;br /&gt;
&lt;pre&gt;android.view.Menu
&lt;/pre&gt;を使用します&lt;br /&gt;
&lt;br /&gt;
さらに、Activity クラスの&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;public boolean onCreateOptionsMenu(Menu menu)&lt;/li&gt;
&lt;li&gt;public boolean onPrepareOptionsMenu(Menu menu)&lt;/li&gt;
&lt;li&gt;public boolean onOptionsItemSelected(MenuItem item)&lt;/li&gt;
&lt;li&gt;public boolean onMenuOpened(int featureId, Menu menu)&lt;/li&gt;
&lt;/ul&gt;などのメソッドを Override することで使用できます&lt;br /&gt;
&lt;br /&gt;
というわけで、Menu をいじってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MenuTest extends Activity {
  private static final int MENU_ID1 = Menu.FIRST;
  private static final int MENU_ID2 = Menu.FIRST + 1;
  private static final int MENU_ID3 = Menu.FIRST + 2;
  private static final int SUBMENU_ID1 = Menu.FIRST + 21;
  private static final int SUBMENU_ID2 = Menu.FIRST + 22;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
  
    ((Button) findViewById(R.id.Button)).setOnClickListener(
      new OnClickListener() {
        public void onClick(View v) {
          // Menu の表示
          openOptionsMenu();
        }
      }
    );
  }

  // Option Menu が最初に表示される時に1度だけ呼び出される
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    boolean ret = super.onCreateOptionsMenu(menu);

    // Menu にアイテムを追加
    menu.add(Menu.NONE, MENU_ID1, Menu.NONE, "Menu1");
    // Menu に Icon 付きアイテムを追加
    menu.add(Menu.NONE, MENU_ID2, Menu.NONE, "Menu2").setIcon(R.drawable.icon);

    // SubMenu を追加
    SubMenu sMenu = menu.addSubMenu(Menu.NONE, MENU_ID3, 3, "Menu3");
    sMenu.add(Menu.NONE, SUBMENU_ID1, Menu.NONE, "SubMenu1");
    sMenu.add(Menu.NONE, SUBMENU_ID2, Menu.NONE, "SubMenu2");

    // Menu にショートカットキーを設定
    menu.findItem(MENU_ID1).setAlphabeticShortcut('a');
    menu.findItem(MENU_ID2).setAlphabeticShortcut('1');
    menu.findItem(MENU_ID3).setAlphabeticShortcut('s');

    return ret;
  }

  // Option Menu が表示される時の動作
  @Override
  public boolean onPrepareOptionsMenu(Menu menu) {
    return super.onPrepareOptionsMenu(menu);
  }

  // Option Menu のアイテムが選択された時の動作
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    boolean ret = super.onOptionsItemSelected(item);
    // 選ばれたアイテムの ID を取得
    switch(item.getItemId()) {
    case MENU_ID1:   // Menu1
      return true;
    case MENU_ID2:   // Menu2
      return true;
    case SUBMENU_ID1:   // Submenu1
      return true;
    default:
    }
    return ret;
  }

  // Option Menu が開かれた時の動作
  @Override
  public boolean onMenuOpened(int featureId, Menu menu) {
    return super.onMenuOpened(featureId, menu);
  }
}
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_jzy8V0BkCW0/S73sJBFdNOI/AAAAAAAAAK0/_WXCAyCvnDU/s1600/menutest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_jzy8V0BkCW0/S73sJBFdNOI/AAAAAAAAAK0/_WXCAyCvnDU/s320/menutest.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
SubMenu は...&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S73sLrbpPyI/AAAAAAAAAK8/WIkDxqLGRRo/s1600/menutest2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S73sLrbpPyI/AAAAAAAAAK8/WIkDxqLGRRo/s320/menutest2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/view/Menu.html"&gt;http://developer.android.com/intl/ja/reference/android/view/Menu.html&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/app/Activity.html"&gt;http://developer.android.com/intl/ja/reference/android/app/Activity.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-8009994426796420637?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cOJqI1kv3Ps8cDrivakcz-LdoKM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cOJqI1kv3Ps8cDrivakcz-LdoKM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cOJqI1kv3Ps8cDrivakcz-LdoKM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cOJqI1kv3Ps8cDrivakcz-LdoKM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/H52JHLHDxcI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/8009994426796420637/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/menu.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/8009994426796420637?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/8009994426796420637?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/H52JHLHDxcI/menu.html" title="Menu を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_jzy8V0BkCW0/S73sJBFdNOI/AAAAAAAAAK0/_WXCAyCvnDU/s72-c/menutest.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/menu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUINQn49fSp7ImA9WxFTF04.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-1008425890881429736</id><published>2010-04-08T23:39:00.001+09:00</published><updated>2010-04-08T23:39:53.065+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-08T23:39:53.065+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>EditText を使ってみた</title><content type="html">EditText は&lt;br /&gt;
&lt;pre&gt;java.lang.Object
   ↳ android.view.View
     ↳ android.widget.TextView
       ↳ android.widget.EditText
&lt;/pre&gt;を使います&lt;br /&gt;
&lt;br /&gt;
というわけで, EditText を使ってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.os.Bundle;
import android.text.InputType;
import android.widget.EditText;

public class EditTextTest extends Activity {
  EditText editText;
 
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.edittexttest);
  
    editText = (EditText) findViewById(R.id.EditText01);
  
    // EditText にテキストを設定
    editText.setText("EditTextTest");
  
    // EditText のインプットタイプを設定
    editText.setInputType(InputType.TYPE_CLASS_TEXT);
  
    // EditText の最大行の設定
    editText.setMaxLines(1);
  
    // EditText が空のときに表示させるヒントを設定
    editText.setHint("This is Hint");
  
    // EditText のカーソル位置を設定
    editText.setSelection(3);
    // EditText のテキストを全選択
    // editText.selectAll();
  
    // EditText のテキストを取得
    String str = editText.getText().toString();
  }
}
&lt;/pre&gt;&lt;br /&gt;
InputType には&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;数字入力&lt;/li&gt;
&lt;li&gt;アドレス入力&lt;/li&gt;
&lt;li&gt;パスワード入力&lt;/li&gt;
&lt;li&gt;オートコンプリート&lt;/li&gt;
&lt;li&gt;入力不可&lt;/li&gt;
etc... &lt;/ul&gt;といろいろあります&lt;br /&gt;
詳しくは &lt;a href="http://developer.android.com/intl/ja/reference/android/text/InputType.html"&gt;InputTypeクラス&lt;/a&gt; を参照してください&lt;br /&gt;
&lt;br /&gt;
XMLリソースで指定することもできます&lt;br /&gt;
&lt;br /&gt;
XMLリソース&lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;EditText 
  android:hint="This is Hint"
  android:id="@+id/EditText" 
  android:inputType="text" 
  android:layout_height="wrap_content" 
  android:layout_width="wrap_content"  
  android:text="EditTextTest"&amp;gt;
&amp;lt;/EditText&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
XMLリソースで&lt;br /&gt;
InputTypeを指定するときは &lt;a href="http://developer.android.com/intl/ja/reference/android/widget/TextView.html#attr_android:inputType"&gt;android:InputType&lt;/a&gt; を使います&lt;br /&gt;
&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/S73qX7r5OjI/AAAAAAAAAKk/AuZuCLZgERs/s1600/edittextest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/S73qX7r5OjI/AAAAAAAAAKk/AuZuCLZgERs/s320/edittextest.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="file:///home/wiede/Document/android/document/EditTextTest/edittextest.png"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
また、ヒントは&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_jzy8V0BkCW0/S73qaM9oNhI/AAAAAAAAAKs/Nsz32ZzwXgM/s1600/edittextest_hint.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_jzy8V0BkCW0/S73qaM9oNhI/AAAAAAAAAKs/Nsz32ZzwXgM/s320/edittextest_hint.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
こんな感じで表示されます!&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/widget/EditText.html"&gt;http://developer.android.com/intl/ja/reference/android/widget/EditText.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-1008425890881429736?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eMtELuwHlQWcat61l9XuzFQBhKk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eMtELuwHlQWcat61l9XuzFQBhKk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eMtELuwHlQWcat61l9XuzFQBhKk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eMtELuwHlQWcat61l9XuzFQBhKk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/HZ1Xn3MhDPQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/1008425890881429736/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/edittext.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/1008425890881429736?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/1008425890881429736?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/HZ1Xn3MhDPQ/edittext.html" title="EditText を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_jzy8V0BkCW0/S73qX7r5OjI/AAAAAAAAAKk/AuZuCLZgERs/s72-c/edittextest.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/edittext.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UFRng5eip7ImA9WxFTFkk.&quot;"><id>tag:blogger.com,1999:blog-6432728779111196799.post-6196072596801016022</id><published>2010-04-07T20:49:00.002+09:00</published><updated>2010-04-07T20:53:37.622+09:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-07T20:53:37.622+09:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title>ScrollView を使ってみた</title><content type="html">ScrollView を使うには&lt;br /&gt;
&lt;pre&gt;java.lang.Object
  ↳ android.view.View
    ↳ android.view.ViewGroup
      ↳ android.widget.FrameLayout
        ↳ android.widget.ScrollView
&lt;/pre&gt;を使います&lt;br /&gt;
&lt;br /&gt;
というわけで、ScrollView をいじってみた&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;サンプルプログラム&lt;/b&gt;&lt;br /&gt;
&lt;pre class="java" name="code"&gt;import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;

public class ScrollViewTest extends Activity {
  ScrollView scrollView;
  LinearLayout linearLayout;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    scrollView = new ScrollView(this);
    linearLayout = new LinearLayout(this);
    linearLayout.setOrientation(LinearLayout.VERTICAL);
  
    for (int i = 0; i &amp;lt; 12; i++) {
      Button button = new Button(this);
      button.setText("Button" + (i+1));
      linearLayout.addView(button);
    }

    // ScrollView に View を追加
    scrollView.addView(linearLayout);

    setContentView(scrollView);
  }
}
&lt;/pre&gt;&lt;br /&gt;
ScrollView は1つしか View を設定できないので LinearLayout などにまとめる必要があります  XMLでまとめて設定することもできます  &lt;b&gt;XMLリソース&lt;/b&gt; &lt;br /&gt;
&lt;pre class="java" name="code"&gt;&amp;lt;ScrollView
  android:id="@+id/ScrollView"
  android:layout_height="fill_parent"
  android:layout_width="fill_parent"&amp;gt;
  &amp;lt;LinearLayout 
    android:id="@+id/LinearLayout"
    android:orientation="vertical"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"&amp;gt;
    &amp;lt;!-- 追加したいView --&amp;gt;
    &amp;lt;Button .../&amp;gt;
        ・
        ・
        ・
  &amp;lt;/LinearLayout&amp;gt;
&amp;lt;/ScrollView&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
プログラムを実行すると...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_jzy8V0BkCW0/S7xxB8ZNA4I/AAAAAAAAAJU/jEjf5ECNz7g/s1600/scrollviewtest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_jzy8V0BkCW0/S7xxB8ZNA4I/AAAAAAAAAJU/jEjf5ECNz7g/s320/scrollviewtest.png" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_jzy8V0BkCW0/S7xxGXy6-XI/AAAAAAAAAJc/LjE5Y4SRIhc/s1600/scrollviewtest2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_jzy8V0BkCW0/S7xxGXy6-XI/AAAAAAAAAJc/LjE5Y4SRIhc/s320/scrollviewtest2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="file:///home/wiede/Document/android/document/ScrollViewTest/scrollviewtest.png"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
こんな感じ!&lt;br /&gt;
&lt;br /&gt;
右にスクロールバーが表示されて、上下に続きがあると少し暗くなっています&lt;br /&gt;
&lt;br /&gt;
参考サイト&lt;br /&gt;
&lt;a href="http://developer.android.com/intl/ja/reference/android/widget/ScrollView.html"&gt;http://developer.android.com/intl/ja/reference/android/widget/ScrollView.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6432728779111196799-6196072596801016022?l=weide-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nmXCzmzT35IfmkB7T86OLYRyW_8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nmXCzmzT35IfmkB7T86OLYRyW_8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nmXCzmzT35IfmkB7T86OLYRyW_8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nmXCzmzT35IfmkB7T86OLYRyW_8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/ZeXx/~4/EvGbNtQmkt0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://weide-dev.blogspot.com/feeds/6196072596801016022/comments/default" title="コメントの投稿" /><link rel="replies" type="text/html" href="http://weide-dev.blogspot.com/2010/04/scrollview.html#comment-form" title="0 件のコメント" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/6196072596801016022?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6432728779111196799/posts/default/6196072596801016022?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/ZeXx/~3/EvGbNtQmkt0/scrollview.html" title="ScrollView を使ってみた" /><author><name>weide</name><uri>http://www.blogger.com/profile/13173075712624032679</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_jzy8V0BkCW0/S7xxB8ZNA4I/AAAAAAAAAJU/jEjf5ECNz7g/s72-c/scrollviewtest.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://weide-dev.blogspot.com/2010/04/scrollview.html</feedburner:origLink></entry></feed>

