2012年8月27日月曜日

最近のAndroid開発環境(v20)は新規プロジェクトがちょっとオシャレに

Jelly Beans(4.1)登場時に行われたアップデートにより、SDK Tools及びADTが20.0.*になっておりました。ので世間からやや遅れてアップデートしたところ、新規プロジェクト作成時のウィザード及び生成されるひな形が結構変わってらっしゃったのでなんとなくまとめました。

 

新規作成時のウィザード

adt20_1

電球マークのとこにフォーカスあたってる設定項目の説明が表示されるようになっています。ほかは前もだいたい設定できた項目だった気がします。

次にアイコンの設定ができるウィザードも追加されたのですが、わりとどうでもいいので省略します。

 

adt20_2

その次にテンプレート選択画面が表示され、従来のとだいたい同じBlankActivityテンプレートとは別にMasterDetailFlowというのが選択できるようになっています。ただしMinimum Required SDKが11(=3.0、Honeycomb)未満の場合は選択できません。

 

adt20_3

BlankActivityを選択した場合、Navigation Typeがいろいろ選択できるのですが、これもMinimum Required SDKが14(4.0、ICS)未満の場合はNoneしか選択できません。使えないッスね。

 

生成されるプロジェクトのひな形について

adt20_4

ウィザードについてはよく見たら結局ランチャーアイコン選べるようになった以外大差なくねというオチだったのですが、生成されるひな形プロジェクトは結構変わっています。

ざっくりいうとマルチデバイス対応の方法についてサンプルが示されるようになったりした感じです。

 

・libs配下に問答無用でSupport Packageが追加される

Minimum Required SDKの設定内容にかかわらずv4.jarが放り込まれてきます。使ってもいないのにMainActivityに最初からimportされていて、Warningが発生しています。Androidプラットフォームの断片化問題に対する意識の高まりを感じます。

 

・最初からmenuが実装されている

 

device-2012-08-27-222634

最初からGingerbread以前(API Level 10-)とHomeycomb以降(API Level 11+)の両方でちゃんと機能するメニューが実装されています。だいたい以下の様な関係者の尽力によってこのメニューが実現しています。リソース名等はデフォルト値でプロジェクトを作成した場合のものです。

バージョン毎の見栄えの違いは、ちゃんとバージョン別にstyles.xmlが定義されていることに起因します。

- src/MainActivity

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

によってメニューを生成しています。MenuInflater自体は別に最近思いつかれた仕組みではない(API Level 1から存在)です。

- res/menu/activity_main.xml

MainActivityでメニューリソースとして指定されているやつです。個人的に見慣れなかったandroid:showAsActionというitemのパラメータは、Honeycomb以降で可能ならアクションバー上に独立して表示されたいかどうかというパラメータです。

ということで、別に新しい互換性のための仕組み使ってるとかじゃないのですが、Honeycomb以降で実行された時に救われないmenuの実装方法もあったので、コレでやってくれたらちゃんと動くよというサンプルがあるのはいいことだなとおもいました。

 

・画面サイズごとのdimens.xmlが定義されている

padding_mediumというdimenについて、large以上の場合16dp、それ以外の場合8dpで定義されています。これ自体は大したことないですが、こんな感じでマルチデバイス対応してね!という事でしょう多分。

 

・バージョンごとのstyles.xmlが定義されている

AppThemeというstyleが存在し、v10以下(Postfixなし)/v11-13(-v11)/v14以上(-v14)でそれぞれ無難なスタイルが設定されています。これも最初からマルチデバイス対応の見本が入ってくるようになったところです。

 

・このプロジェクト直下のic_launcher-web.pngというのは…

マーケットもといGoogle Playの各所で表示される用の高解像度アイコンらしいです。なんか昔apkと別個にアップしてたようなおぼろげな記憶があるけど、-web.pngて尻につけて含めておくと勝手に読んでくれるみたいな感じなのかな?

0 件のコメント:

コメントを投稿