woshidan's blog

あいとゆうきとITと、とっておきの話。

Android開発に入る前に知っておきたかったこといくつか

ぐぐっても出てき難かったし、聞くまでもないでしょ的なことなのか一通り書いてみるまで分からないことにすら気づけなくて後からひえーってなったことの覚え書き。

端っこの要素のmarginの扱いについて

時々古いAPIバージョンでダイアローグ等のレイアウトを作っていると、子要素の外側のmargin(つまり、レイアウトの端までの間隔)が反映されないことがあった(多分、下記の記事で言われていることだと思うのだけど、上手い例で再現できない)。

https://www.reddit.com/r/androiddev/comments/2vq3ua/very_different_margins_in_layouts_between_api_19

API21では表示されてたのにAPI16では余白がおかしい!みたいな。

忘れた頃に発見して慌てるので、子要素に外側の要素へのmarginを設定したくなった場合は、その親要素のpaddingで書けないか確認した方が良い。そっちのほうがコード量も少なくて済むことが多い感じ。

API20はウェアラブルデバイス限定っぽい

http://developer.android.com/intl/ja/training/wearables/apps/creating.html

検証用のエミュレータを見つからなくて確認してて不安になった...。

ダイアローグは基本的にインナークラスのFragmentを使う

一昔前はHolo.Dialog系のダイアローグ用のテーマを使ってActivityで作ってたみたいなのだけど、いま新しいマテリアルデザイン用のテーマでそれに対応するものが無いので、ダイアローグで対応するのがよいのだと思います。

Holo.DialogのActivityだから死ねば良いとかそういう信念があるわけではないけれど、マテリアルデザイン対応のための処理が他のActivityなどと変わるので、手間がかかり申し訳なくなります...。

StatusBarを透過させたときの透け方は機種依存っぽい

<item name="android:windowTranslucentStatus">true</item>

でStatusBarの透過の対応をしたのだけど、自分の機種(SoftBank 401SO)では上から半透明のグラデーションがかかるのだけれど、他の機種ではStatusBar全体が半透明になっていた。