[Android] ActionBarActivityを使う

こんにちは、KID.Aです。

今回は、少し古い情報ですが、アップさせていただきます。
Android support Library v7からActionBarActivityが登場しました。
今までActionBarを2系バージョンで使用する場合は、ActionBarSherlockなどのオープンソースを使用していたと思いますがActionBarActivityのおかげで、オープンソースを使用しなくても、2系バージョンでもActionBarが使えるようになりました。

ActionBarでできること

・メニュー
device-2014-05-05-025847
・ドロップリスト
device-2014-05-05-025952
・タブ
device-2014-05-05-030338

実装

使用方法は特別難しくありません。
すでに最近のEclipseではAndroidプロジェクトを作成すると、デフォルトでActivityではなく、ActionBarActivityで作成されます。
通常は、以下の画面でテーマにAction BarをいれるとActionBarActivityが作成されます。
SnapCrab_NoName_2014-5-5_2-47-17_No-00

 

以下は、ActivityからActionBarActivityに変更する際の手順です。

1. Activityの代わりにActoionBarActivityを継承させてください。
ActionBarActivityはFragmentActivtyを継承しているため、Fragmentにも対応できます。

public class MainActivity extends ActionBarActivity {

2. Theme.AppCompat.Lightを追加します。

<style name="AppTheme" parent="Theme.AppCompat.Light">
</style>

3. 指定したテーマをapplicationタグに追加します。

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

これで完了です。

メニューの実装

Eclipseで作成する際にはナビゲーション・タイプのどれを選んでもメニューはついてきます。今回はナビゲーション・タイプをNoneにします。
SnapCrab_NoName_2014-5-5_2-58-20_No-00

メニューの追加部分をみてみます。
1. 以下でメニューを追加します。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
	getMenuInflater().inflate(R.menu.main, menu);
	return true;
}

 

ドロップリストの実装

Eclipseでデフォルトでドロップリストを作成する際にはナビゲーション・タイプをAction Bar Spinnerにします。

SnapCrab_NoName_2014-5-5_2-57-32_No-00

ドロップリストの追加部分をみてみます
1. Actionを取得してモードを設定します。

final ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(
		new ArrayAdapter<String>(
				actionBar.getThemedContext(),
				android.R.layout.simple_list_item_1,
				android.R.id.text1,
				new String[] {
						"選択1",
						"選択2",
						"選択3",
				}),
		this);

2. リスナーを追加します。

public class MainActivity extends ActionBarActivity implements ActionBar.OnNavigationListener {

3. 選択された際の挙動を追加します。

@Override
public boolean onNavigationItemSelected(int position, long id) {
	return true;
}

 

タブの実装

Eclipseでデフォルトでドロップリストを作成する際にはナビゲーション・タイプをAction Bar Tabsにします。

SnapCrab_NoName_2014-5-5_2-56-15_No-00

タブの追加部分をみてみます
1. Actionを取得してモードを設定します。

final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(
	actionBar.newTab()
		.setText("タイトル")
		.setTabListener(this));

2. リスナーを追加します。

public class MainActivity extends ActionBarActivity implements ActionBar.TabListener {

3. 選択された際の挙動を追加します。

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}

@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}

@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}

その他

また、ActionBarDrawerToggleを使用すれば、スワイプするメニューも作成できます。
Eclipseでデフォルトでスワイプするメニューを作成する際にはナビゲーション・タイプをNavigation Drawerにします。
SnapCrab_NoName_2014-5-5_2-57-52_No-00
・Navigation Drawerでできた画面になります。
device-2014-05-05-030428

現在、Google Developerの情報を見る限り、シェアの8割が4.x系になります。
そのため、新規で開発する際には4未満はサポート対象の悩みどころになってきますが、2割は大きいという考えもあるので、入れる場合はなるべくなら4系と同じようなデザインになるように、ActionBarActivityで設定ボタンやタブなどは合わせるようにしましょう。

KID.A

KID.A の紹介

楽して生きることと一発逆転を夢見ている、ちゃきちゃきのAndroiderです。 いろいろアプリを出しているのですが、いつもリリース後にターゲットユーザ数を2桁見誤っていたことに気付くので、残念でなりません。下方修正で、ヒットがでません。おしいです。 明日から本気出します。 よろしくお願いします。
カテゴリー: Android タグ: , , , , パーマリンク

コメントを残す

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