雑記帳2014年4月27日日曜日バックグラウンド処理の間プログレスダイアログを表示するAsyncTaskAsyncTaskのパラメタライズはそのままに、共通化したい前処理や後処理を実装するとこんな感じ。InsetDrawableを活用する」で取り上げましたが、これを使うとListView用に左右に余白のある区切り線を作ることができます。Android2014年4月11日金曜日Facebookとそれ以外でACTION_SENDで渡すテキストを変えるFacebookはポリシーで投稿のpre-fillを禁止している(https://developers.facebook.com/policy/)ため、テキストの代わりにリンクを共有することがよくあります。前回の「「ギャラリーから選択」と「カメラで撮影」を1つのchooserで表示する。」と同じ方法を使うと、Facebookとそれ以外でIntent.EXTRA_TEXTに含める文字列を変えることができます。「ギャラリーから選択」と「カメラで撮影」を1つのchooserで表示する。異なるActionのIntentそれぞれに対応するアプリを、1つのchooserで選択できるようにする方法です。そのため、まず「ギャラリーから選択」と「カメラで撮影」のどちらかを選ぶためのダイアログを用意する例をよく見ます。ギャラリーが出てこなくなり、代わりにドキュメントがでてきます。ここではギャラリーの方がわかりやすいので、ギャラリーとします。Intent.EXTRA_INITIAL_INTENTSを使えば、1つのchooserダイアログに両方入れることができます。InsetDrawableを活用するタグ等、デザイン的に大きくしたくないけれど、タップに反応させるコンポーネントは、実際にタップできる領域を見た目より大きくとるのが鉄則です。これを実現する方法が3つあります。Viewの階層で実現するすぐ思いつく方法ですが、Viewが増えるので初心者っぽいです。*@color/tag_bgはColorStateListです。9patch画像で実現する透明の領域とタグの背景部分をあわせた9patch画像を用意します。Viewが増えないので中級者です。各解像度用の画像を用意するのは結構面倒です。おまけにタップしたときの画像も用意しないといけません。InsetDrawableで実現するInsetDrawableを使えばViewも増えないし、画像もいりません。残念ながらinsetのなかのshapeのsolidでColorStateListを指定しても適用されませんでした。Cookbookの内容をざっくり紹介したものですが、去年のABCで講演したときもトレンドを扱っていたので、各アプリがどう変わったのかも載せています。2014年4月18日に秋葉ちひろさんと出版記念イベントを行います。Cookbookを当日持っていくと割引になります。ABCが終わった後に、ABC用のアプリを作ります。(イベント前に公開します!)どういう意図をもって設計したのか、どうしてこういう画面構成になったのかなどを、イベントで解説します。Spinnerの選択肢をXMLで指定するSpinnerでは、Adapterを用意しなくてもXMLから選択肢をセットすることができます。このandroid:entries属性はAbsSpinnerで用意されています。このレイアウトを見るとわかりますが、それぞれandroid:spinnerItemStyleとandroid:spinnerDropDownItemStyleに指定されているスタイルを適用しています。この属性に独自のスタイルをセットすれば、Spinner部分とドロップダウンの文字サイズや文字色を一括で変えることができます。</resources>この方法のときも、setOnItemSelectedListener()を使って選択項目が変わったことを検知でき、Adapterが保持しているObjectはStringになります。アプリつくったり、本書いたり、講演したりしてます。