読者です 読者をやめる 読者になる 読者になる

It’s now or never

IT系の技術ブログです。気になったこと、勉強したことを備忘録的にまとめて行きます。

【Android】ActionBarのAppIconを使ってみる

ActionBarの左上のAppIcon領域には、自由にロゴ画像を配置することが可能です。
また、タップイベントを有効することで画面の遷移ナビゲーションを管理することも可能です。

AppIconのロゴを変更する

1.AndroidManifest.xmlで指定する

AndroidManifest.xmlからAppIconの画像を変更するには、 Activity要素にあるandroid:logoに表示したい画像リソースを指定します。

<activity
    android:name="com.example.actionbarmove.SampleActivity"
    android:logo="@drawable/icon" >
</activity>

2.ソースから指定する

ソース上から、画像を変更するには、getActionBar()で取得した ActionBarに対してsetLogo()を使用します。

getActionBar().setLogo(R.drawable.icon);

タップイベントを取得する

AppIconのタップイベントを取得するには、 ActionBarに対して、setDisplayHomeAsUpEnabled(true)を実行します。
上記メソッドを実行するとAppIconのアイコンに<マークが付き、 タップイベントを取得できるようになります。

getActionBar().setDisplayHomeAsUpEnabled(true) 

タップイベントを取得するには、
Activityクラスで、onOptionsItemSelected()メソッドをオーバーライドします。
AppIconには、android.R.id.homeというリソースIDが割り振られいるため、
これをハンドリングします。

下記の実装では、AppIconを押下されたタイミングで、ホーム画面へ遷移を行っています。
Intent.FLAG_ACTIVITY_CLEAR_TOPを付与して画面遷移を行うことでActivityスタックをクリアし、
どの画面から遷移してもホーム画面へ戻ることが可能です。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in Action Bar clicked; go home
            Intent intent = new Intent(this, HomeActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

参考

http://www.techdoctranslator.com/android/guide/ui/actionbar
http://dev.classmethod.jp/smartphone/android-tips-10-AppIcon/