QuickActionの使い所

簡単に使えることが解ったQuickActionだが先日のエントリで妄想していた"バンド"として実際にどのようなユースケースで実装すれば良いかを考えてみた。

いきなり画面を作る。

このようにアクティビティにカレンダを配置して、カレンダの情報を基点にして何かの処理を行う。よくあるのはGoogle Calendarのようにスケジュール情報を登録する処理(アクション)だろう。

下端に配置しているバンドは「QuickActionBand」であり、アンカーとなっているアイコン(内部ではImageButton)をタップすることでQuickActionが表示される。(アイコンがandroidの内部リソースから引っ張ってきたものなのは急造なので勘弁してほしい)

QuickActionはなんらかのインタフェースを定義したバンドを介してActionItemを追加できるようにしておく。

  • QuickActionBand.javaより抜粋
〜
final ImageButton btn = new ImageButton(this.getContext());
btn.setImageDrawable(this.getContext().getResources().getDrawable(android.R.drawable.ic_menu_agenda));

btn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        ActionItem item = new ActionItem();
        Resources res = this.getContext().getResources();
        item.setIcon(res.getDrawable(android.R.drawable.ic_menu_my_calendar));
        item.setTitle("スケジュールを登録");

        QuickAction quickAction = new QuickAction(btn);
        quickAction.addActionItem(item);
        quickAction.show();
    }
  • 実行結果

アクションアイテムの描画がいささか大きいのが気になるが、取りあえずこんな感じで実装していけば良さそうだ。
バンドは上端に配置するか下端に配置するか迷ったが、スマートフォンを片手で操作する際に、大抵の人は下に配置されている方が操作しやすいだろうということで、取りあえず下端に配置することにした。