SDK 4.0 でサンプルコードが増えている。
ひとつずつ試してみる。
・ActionBarCompat
・AndroidBeamDemo
・SampleSpellCheckerService
・TtsEngine
・VoicemailProviderDemo
・WiFiDirectDemo
ActionBarCompat
ActionBarCompat – Action Bar Compatibility の日本語訳
このサンプルでは、ActionBar のAPI を持つ API 11 以降の機種と、持たない API 11 以前の機種に対して、ActionBar をどのように実装するかを示している。
API 11 以前の機種に対しては、新しいフレームワークAPIと同様に扱えるように、互換性のある ActionBar は、menu resource ベースのアクション項目の定義のメカニズムを使用して実装する。
さらに、API 11 から導入された android:showAsAction 属性を限られた範囲でサポートする。
動作確認
ActionBar は3.0から採用されたメニューバーです。
このサンプルコードは、1.5 Cupcake から 4.0 Ice Cream Sandwich を対象にしています。
エミュレータのバージョンを 1.6, 3.0, 4.0 で確認してみたところ、いずれも動作しました。
ソースコード
ソースファイルは8個あります。
・ActionBarActivity.java
・ActionBarHelper.java
・ActionBarHelperBase.java
・ActionBarHelperHoneycomb.java
・ActionBarHelperICS.java
・MainActivity.java
・SimpleMenu.java
・SimpleMenuItem.java
MainActivity.java
メインの Activity です。
自作の ActionBarActivity を継承しています。
下記のメソッドが実装されています。
・onCreate
・onCreateOptionsMenu
・onOptionsItemSelected
ActionBarActivity.java
MainActivity の基底クラスです。
Activity を継承しています。
ActionBarHelper を呼んでいます。
ActionBarHelper.java
ActionBar の Factory クラスです。
実行環境のバージョンに応じて、下記の3つのファイルを呼んでいます。
・ActionBarHelperBase.java : 1.0系 2.0系 用
・ActionBarHelperHoneycomb.java : 3.0系 Honeycomb 用
・ActionBarHelperICS.java : 4.0系 ICS 用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { return new ActionBarHelperICS(activity); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { return new ActionBarHelperHoneycomb(activity); } else { return new ActionBarHelperBase(activity); }
SimpleMenu.java
Menu を implements している。
1.0系 2.0系 用のメニューです。
ActionBarHelperBase から呼ばれます。
SimpleMenuItem.java
MenuItem を implements している。
1.0系 2.0系 用のメニュー項目です。
関連記事
・サンプルコード ActionBarCompat
・サンプルコード AndroidBeamDemo
・サンプルコード SampleSpellCheckerService
・サンプルコード TtsEngine
・サンプルコード VoicemailProviderDemo
・サンプルコード WiFiDirectDemo