意外と知られていない?
「Toolbar」に「ドロワー(ハンバーガー)アイコン」が表示されていて、ドロワーを表示すると、そのアイコンがパラパラっと回転するアプリを、たまに見掛ける。
以下、ちょうどドロワーを開こうとしているところのスクリーンショット。
画面の左上みたいな感じ。
これ、見掛けるの、「たまに」、なんだよね。
何故だろう?
だから意外と、実装方法を知らない人が多い?のかもしれない。
→※本記事の「コメント欄」も参照のこと
サンプルコード
「Material icons - Material Design」から「≡」アイコンを取得する必要はない。
実装上で「ActionBarDrawerToggle」というのを生成して、「DrawerLayout」に対してそれを「addDrawerListener」すると、「≡」アイコンが勝手に表示される。
んで、さらに「ActionBarDrawerToggle.syncState()」をコールすることで、ドロワーの開閉とシンクロするようになって、アイコンがパラパラするようになる。
以下、Activity内の実装例。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set layout
setContentView(R.layout.activity_top);
// set toolbar
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// sync drawer
DrawerLayout drawerLayout = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle actionBarDrawerToggle =
new ActionBarDrawerToggle(
this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close);
drawerLayout.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();
// set navigation
NavigationView navigationView = findViewById(R.id.navigation_drawer);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
return false;
}
});
}
「ActionBarDrawerToggle」の引数が多くて、いつも覚えていられない。
1.host Activity
2.DrawerLayout object
3.Toolbar object
4.「ドロワーを開く」操作を示す文字列リソース(ユーザー補助機能用)
5.「ドロワーを閉じる」操作を示す文字列リソース(ユーザー補助機能用)
「3.Toolbar」を忘れがちだ。
公式「ナビゲーションドロワーの作成」も一読しておくと、尚のこと、理解できると思う(但し、ToolbarではなくActionBarでの実現方法が記載されているので、混同しないように注意しましょう)。
(※「minSdkVersion 21:Lollipop」を前提としたサンプルコード)
サンプルアプリ
プロジェクト一式や操作動画を確認するよりも、アプリの実動作・見栄えを自らの手で触れて確認した方が、開発者として多くを得られると思っているので、以下のアプリ(=上記スクリーンショットのアプリ)を参考にしてみてほしい。
シンプルなメモ帳は文字数もカウントする-カラーラベルや並べ替えを搭載した無料ノート-NOTEBOSS
【動作環境】
Android OS 5.0以上
Made in Japan.
© CUTBOSS
Producer & Director, Boss of the Barber.
Lead Programmer & Designer, Boss of the Barber.