カテゴリー
Androidアプリ (2 / 2)
2021/04/04・Androidアプリ
Android StudioでTouch Barをカスタム
Android Studio、もといIntelliJ IDEA(Android Studioのベースソフト)にはTouch Barをカスタマイズする機能が搭載されています。
軽く方法を解説しますと、
⌘ + , でSettingsを開く
「Appearance & Behavior」→「Menus and Toolbars」→「Touch Bar」の中身を編集
と言う感じでできます。(⌘との同時押しなどで機能するフォルダーもあるため、よくフォルダー名を見て編集してください)
私は普段Flutterでアプリ開発をしているので、Flutter Hot ReloadがTouch Barにあるとかなり便利です。そこで、「Default」→「Touch Bar Run/Debug Actions」に「Flutter Hot Reload」を追加しようとしたわけです。
しかし表示されません。
明らかに追加されていますが、
上のように、Hot Reloadが表示されません。
というわけで、対処法を作りました。
Touch BarにHot Reloadを表示させるには
結論から言うと、直接表示させることはできません。いくら試しても出てきませんでした。なので、回り道をして別のアプローチで登録します。
手順1. キーマップ設定の確認
ここでは、ショートカットキーとマクロを利用する方法で実現します。
まず、⌘ + , を押して設定画面を開き、「Keymap」をクリックします。その中の検索ボックスで「Hot Reload」と検索します。すると「Flutter Hot Reload」が表示されるはずです。ここで、日本語配列のMacだと注意。日本語配列のMacには 「\」キーが存在しません 。そのため、初期設定のショートカットキーは使えません。
「Flutter Hot Reload」をダブルクリックし、「Remove ⌘\」をクリックして削除し、再度ダブルクリックし「Add Keyboard Shortcut」をクリックします。そして⌘キーと、Windowsキーボードでは「\」のある「_」キーの同時押しに設定します。
手順2. マクロの作成
次はマクロを作成します。Edit→Macros→Start Macro Recordingをクリックし、先程のショートカットキーを同時押しし、右下に表示される停止ボタン(赤い四角)をクリックします。
マクロ名を入力します。「Flutter Hot Reload」としてください。
手順3. アイコンのダウンロード
このままマクロをTouch Barに登録すると「Flutter Hot Reload」という文字になってしまって格好悪いし分かりにくいので、それっぽいアイコンをダウンロードします。
以下のサイトから「lightning」で検索にかけて、稲妻アイコンをSVG形式でダウンロードしてください。(右下)
https://jetbrains.design/intellij/resources/icons_list/
ダウンロード後は解凍してください。
手順4. Touch Barへの登録
⌘ + , →「Appearance & Behavior」→「Menus and Toolbars」→「Touch Bar」(右側の画面)→「Default」→「Touch Bar Run/Debug Actions」→「Run」をクリックし、上部の「+」→「Add Action...」をクリックします。
「Macros」→「Flutter Hot Reload」をクリックし、下部の「icon:」の右側のフォルダーアイコンをクリックし、ダウンロードしたアイコン(lightning.svg)を選択して「Open」をクリックし、「Set Icon」をクリックし、OKをクリックします。最後に設定画面でOKをクリックして完了です。
上のようになりました。位置を変更するには、設定上部の上下三角アイコンをクリックして並び替えます。
環境について
今回の説明で利用した環境です。
Android Studio 4.2 beta6
Material Theme UIプラグイン導入済み
Flutter Plugin 55.0.2
2020/04/19・Androidアプリ
困ったこと
Android 10は、ダークテーマをオンにすると背景と文字色が反転し、黒基調のカラーになります。通知も黒基調の色になるのですが、カスタム通知を作る時に少し困りまして…
普通、背景色と文字色などはそれぞれ以下の値で呼び出せます。
?android:attr/colorBackground
?android:attr/colorForeground
しかし、これらは通知のRemoteViewでは**機能しません。**かなり困った。
解決法
文字色の場合は、style属性に専用のスタイルを設定してあげると治ります。
style="@style/TextAppearance.Compat.Notification.Line2"
Vectorは諦めて白と黒の中間色にします。
android:tint="?android:attr/textColorSecondary"
※ダークテーマかどうかで色が変わるわけではない
2020/01/03・Androidアプリ
Androidプログラミングコラム第2回です。多分
今回は、Androidでユーザーに処理を待ってもらうために出すProgressDialogについて取上げます。
ProgressDialogについて
ProgressDialogは、結構前から非推奨(Deprecated)となっています。にも関わらず、私も含め多くのアプリでこのProgressDialogを見かけます。おそらく、実装が楽なんでしょうね。何も考えず表示すればいいだけなので。
通常、Deprecatedになるものといえば、代替の仕組みやメソッド、定数などが出来たり、サポート外になったものなどですよね。しかし、ProgressDialogがDeprecatedとなっている理由は少し変わっています。
ProgressDialogがDeprecatedとなっている理由
っていうか、非推奨である理由は明記するための仕組み(Javadoc)がちゃんとあるので、普通に見ることができます。
そこには、こういう記載が。
ProgressDialog is a modal dialog, which prevents the user from interacting with the app. Instead of using this class, you should use a progress indicator like [ProgressBar](https://developer.android.com/reference/android/widget/ProgressBar.html), which can be embedded in your app's UI. Alternatively, you can use a notification to inform the user of the task's progress.
(訳:ProgressDialogはモーダルダイアログであり、ユーザーのアプリ操作を妨げます。このクラスを使うのではなく、ProgressBarのようなUIに埋め込めるプログレスインジケータを使用するべきです。あるいは、タスクの進行状況を知らせるためにNotificationを使うこともできます。)
https://developer.android.com/reference/android/app/ProgressDialog
要するに、ProgressDialogが表示されている間はユーザーが何も出来なくなり、UXが低下するということです。あなたも、「間違えてタップしちゃったけどProgressDialogが邪魔で読み込み終わるまで前の画面に戻れない」なんて経験があるでしょう。そういうことを引き起こすので、GoogleとしてはなるべくProgressDialogは使わせたくないようです。
つまりは、ProgressDialogの代替を自力で作らなければならない訳ではなく、ProgressDialogの概念自体が非推奨ということです。
そこを少し勘違いした投稿を見つけたので記事を書きました。ProgressDialogを表示させるのはユーザーに操作をさせたくない時だけにしましょう。進行状況を表示したい際も、少し面倒でもProgressBarをUIに直接埋め込むようにしましょう。