サンプルコード ActionBarCompat


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


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です