スマートフォン・ジン | Smartphone-Zine

引っ越し先→ https://smartphone-zine.com/

Android SDK r20を使ってプロジェクトを作成してみる

Android SDK r20ようやくきましたね!それにしてもプロジェクトの作成方法が大幅に変わっています。変わりすぎです。 それでは大幅に変更されたAndroidプロジェクト作成ウィザードをみていきましょうか!Activityを1つだけ有するシンプルなプロジェクトを作成してみましょう。

まずは雛形を作ってみます。プロジェクトの情報を入力します。

Build SDK: Android 4.1 (API 16)
Minimun Required SDK: API 8Android 2.2 (Froyo)

を選択して「次へ」をクリックします。

アイコンが作成出来るようになりました。そのまま「次へ」

BlankActivityを選択して「次へ」

もし、Android Support Libraryがインストールされていないとインストールを促されます。ウィザードで作成されるひな形はAndroid Support Libraryに依存しているようです。 サポートパッケージは旧バージョン(Android 1.6~2.3.x)上で新しいバージョンの機能を使用できるようにするための後方互換ライブラリです。 This template depends on the Android Support library,which is either not installed,or the template depends on a more recent version than the one you have installed. 必須バージョン:8 インストール済みバージョン:未インストール You can install or upgrade it by clicking the Install button below, or alternatively,you can install it outside of Eclipse with the SDK Manager, the click on "Check Again" to proceed. と表示されます。「Install/Upgrade」ボタンを押します。

インストールするパッケージの選択画面が開くので「すべて受諾」を選択して「インストール」ボタンをクリックします。

Navigation Typeは「None」を選択したままにして「完了」をクリックするとプロジェクトが作成されます。

作成されたActivityはこのようになっています。 [java highlight_lines="6,7"] package com.smartphone_zine.sample; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MenuItem; import android.support.v4.app.NavUtils; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } [/java] あれ? import android.view.MenuItem; import android.support.v4.app.NavUtils; 上記2行は「インポートされた android.support.v4.app.NavUtils は 1 度も使用されていません」という警告が出ている。 ということで、ウィザードで作るひな形のうち、「BlankActivity」「Navigation Type:None」なプロジェクトではAndroid Support Libraryを使用していないようです。 試しにandroid-support-v4.jarをビルド・パスから除去しても動作しました。これはどういうことでしょう。おそらくGoogleとしては、「サポートライブラリを使用してAndroid2.3.3以前でも、Android3.0以降でも動くように作りましょうね」、ということなのでしょうか。 デザインはどうなっているのでしょう。まず、Android4.1(API16)で実行してみます。メニューがちゃんとActionBarで表示されていますね。

次にAndroid2.3.3(API10)で実行してみましょう。こちらは旧来のタイトルバーになっています。

というわけで、 Build SDK を最新のAndroid 4.1 (API 16)を指定しつつMinimun Required SDKに、古いSDKである、API 8Android 2.2 (Froyo)あたりを指定することで新しい3.0以降のUIに対応しつつ、古いAndroid2.2にも対応させる、というのがこれからのAndroidアプリ開発のスタイルになりそうです。 蛇足ですが、サードパーティ製のライブラリを使えばAndroid2.3.3以前のアプリでもActionBar相当の動作ができるようです。 また、プロジェクト作成時にHierarchical Parentに、android.support.v4.app.FragmentActivityを指定してプロジェクトを作成すると、作成されるプロジェクトのひな形はまた内容が異なるものになります。 マニフェストファイルに [xml] <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="android.support.v4.app.FragmentActivity" /> [/xml] と、メタデータが追加されます。これはオプションパッケージのNavUtilsで使っているようです。これでインポートされるも使われなかったNavUtilsがようやく生きてきたわけです。しかしながら今度はエラーでビルドできません。 getActionBar().setDisplayHomeAsUpEnabled(true); の行でエラーになっています。getActionBar()はAPI 11からなのでエラーになっている様子です。 FragmentActivityを指定してプロジェクトを作成メソッドオーバーライドが追加されています。 [java] @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item); } [/java] さて、というわけでそろそろFragmentActivityについて勉強していきましょうか。