X

システムテーマで統一感を出す

Android 4.0(targetSdkVersionもしくはminiSDKVersionが14以上)ではアプリケーションのデフォルトテーマが、Theme.DeviceDefaultに統一されました。

今まででも未指定の場合はTheme.Black、Android 3.0以降であればTheme.Holoなどが適用されていましたが、Android端末ごとに適用されるテーマがカスタマイズされているなど、アプリケーション側ではレイアウトを制御しにくかったのが現状です。

今回、Android 4.0からTheme.DeviceDefaultが追加されたことで、端末メーカーが、自分の端末ごとにテーマを用意することになります。アプリケーションでThemeを指定しなければTheme.DeviceDefaultが適応されます。ユーザーにとっては使い慣れた端末のテーマが適応されることになり、統一感が向上します。

Android 4.0でのTheme.DeviceDefaultなど、Themeの指定方法は以下の通りです。
テーマの指定方法は続きから。

テーマを設定する

Themeの設定はAndroidManifest.xmlのActivity要素の属性値を追加します。
AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="org.techbooster.sample.systemthemes"
    android:versionCode="1" android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="14" />
    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" >
        <activity android:label="@string/app_name" android:name=".SystemThemesActivity"
            android:theme="@android:style/Theme.Light" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Theme.DeviceDefaultを利用するには、6行目、minSdkVersionを14(Android 4.0)で指定します。
targetSdkVersionを14以上にしてもTheme.DeviceDefaultがデフォルトテーマ(記述を省略した際に適応されるテーマ)として設定されます。
9行目:希望のテーマがある場合は、android:theme属性としてテーマを設定します。
9行目のコードを消去すれば、Theme.DeviceDefaultが適用されます(6行目のminiSdkVersionを指定したおかげですね)

テーマを選ぶ

以下は、Android 4.0以降の基準となるテーマをエミュレータからキャプチャしました。UIパーツの表示されかたの確認やUI検討などで見比べる際に便利です。

Theme.DeviceDefault(Black)


アイコン、アプリケーションのタイトルが強調されています。

Theme.DeviceDefault.Light


アイコン、アプリケーションのタイトルが強調されています。また色の基調が白に変更されています。

Theme.DeviceDefault.Wallpaper


ウィジェットはそのままに、背景色が透明化されています。

Theme.Black


Android 2.3でおなじみの黒を基調としたテーマです。

Theme.Light


Android 2.3でおなじみの白を基調としたテーマです。

タイトルバーを表示しないTheme.Black.NoTitleBarや、Android3.0のレイアウトを踏襲するTheme.Holoなどいろんなテーマがあります、アプリケーションのみならず、ダイアログ向けのテーマTheme.Dialogなども多数用意されています。
テーマを利用することで統一感が向上します。是非、作りたいアプリ、コンポーネントにあわせて利用してください。

以上、お疲れ様でした!

mhidaka: Software Engineerだよ。DroidKaigi Organizer / Androidと組込とRe:VIEW。techbooster主宰。mhidaka's writings http://booklog.jp/users/mhidaka 技術書典! http://techbookfest.org