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

なるようになるかも

力は多くの場合、その人の思いを超えない。

続・ショートカット作成アプリ

glayash/Shortcut2 · GitHub

もともとは来るべきActionBarActivityへの移行に備えて手を動かしてみようということで、アプリ内に存在する任意のActivityを起動/ショートカット作成を行う、というアプリを作ってみたんだけど、なかなか面白かった。

f:id:quesera2:20131126235839p:plain

開発者向けオプションへ直で飛べるショートカットを作成できたり(普通にやる方法があるのかもしれないけど)、バージョンによってはマルチタスクボタンをショートカット化できたりする。

f:id:quesera2:20131126235946p:plain

あとは外部非公開のActivityを覗き見するほか、テスト用と思われるActivityを起動することもできる。画像はChoromeのもの。新しいAPIのテスト用なんだろうか。

ActionBarActivityの感想など

ActionBarActivityへの移行自体はそこまで大変じゃないけど、タブレットのサポートを踏まえたFragmentの分割など、事前に考えることが多くなりそうな感じ。しかし見た目がぐっとAndroidっぽくなるのはいいよね。2.X時代のゾンビアプリのメンテナンスはもう嫌だ…。

あと、このアプリでやることがあるとすれば、設定画面を作るくらいなんだけど、DeprecatedだらけのPreferenceActivityActionBarActivityとして使えないので論外として、PreferenceFragmentは相変わらずCompatibilityサポートの対象になってないみたいで詰んでる。

設定画面の自作が大変というわけではないけど、SherlockPreferenceActivity相当がないのは痛い。公式のActionBarActivityを使うメリットがいっこ減った感じ…。

あとAndroid lint@NewAPIで互換性に問題のあるメソッドを呼び出していないかチェックをし ているのだけど、 KitKatで挙動が変わったメソッド についてまでは追跡してくれないのね。

具体的には、ListViewaddHeaderView()は、setAdapter()を呼び出す前に実行しなければならない制約があったのですけど、KitKat以降ではいつでも呼び出せるように変更されています。

結果として、KitKatでは合法なコードが、過去バージョンだと実行時エラーになるという…。こういう複数のバージョンの端末持ってないとバグを検出できない仕様変更はやめて欲しい所存。

ListFragmentで楽をしようと思うと、addHeaderView()を使いたくなるけれど、setEmptyText()を設定するとヘッダの部分も消える(ヘッダもListViewの一部だから当然といえば当然なんだけど)ので、そもそもヘッダとリストを別のFragmentとして制御した方がよさそう。

よくあることだけど

QuickShortcutMaker - Android Apps on Google Play

自分が作ってるのより、はるかに洗練されてるアプリがストアにあった。