Android Tips #22 Nexus7 に対応させるときの注意点

catch
96件のシェア(ちょっぴり話題の記事)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Nexus7 を購入しました

弊社でも巷で噂の Nexus7 を購入しました!

7インチというスマホより大きな画面に、最新OSが搭載され、安価。とっても良いですね!
というわけで今回は Nexus7 に対応したAndroidアプリを作るにあたっていくつか注意点を Android Developers Blog の記事を参考に見ていきたいと思います!

スクリーン

解像度は tvdpi

Nexus7 のスクリーンの解像度のグループは、いままであまり使われることがなかった tvdpi になっています。 そのため tvdpi のアセットファイル(画像など)をすべて用意する必要があるかと思いきや…そうではありません。 tvdpi に表示するアセットファイルは、システム側で hdpi のアセットファイルをスケールして表示してくれます。 なので Nexus7 に表示されるアセットは hdpi のもの!という認識をしておけば基本的にOKです。

9-patchにご注意

アセットファイルは基本的に hdpi のものがスケールされて表示されますが 9-patchをあてているアセットは固定領域の指定に注意が必要です。どういう注意が必要か実際の動作を確認しながら見ていきましょう。
下図はDroidくんが固定で表示されるように設定したアセットファイルです。この画像の固定領域の範囲はDroidくんの超ギリギリから始めています。

これを Nexus7 で表示させるとこうなります。

ああああああああ。なんか腕びよーんしてます。これは hdpi のアセットファイルから縮小されるときに 9-patch の指定範囲にズレが生じてしまうためです。
こうならないように 9-patch の固定領域の指定は多めにとっておくようにしましょう。

レイアウト

7インチ用にレイアウトを分ける

Nexus7 のスクリーンは7インチという、今までにあまりない大きさですね。 スマホよりは広く、タブレットよりは狭い。 そんな画面サイズなので、レイアウトも個別に指定し、表示する情報量への配慮は欠かせません。 7インチ用にレイアウトを別にしたい場合は、以下のようにレイアウトXMLの配置場所を変えます。

res/layout-sw600dp/activity_home.xml

sw600dp というのは、最小幅 (Smallest Width) が 600dp である、という意味です。 Nexus7 のスクリーンサイズは 600 × 960 dp なので、上記指定のレイアウトが適用されるようになります。
さらに10インチもわけたい!という場合は以下のように配置します。

res/layout-sw720dp/activity_home.xml

7インチ用に dimens.xml を分ける

7インチの端末はスマホよりも文字サイズを大きくしないと見づらいことがあります。7インチの場合のみ文字サイズを大きく指定するには、以下のようにレイアウト指定と同様XMLの配置場所を変えます。そうすることで、スマホ用と7インチ用で文字サイズの指定を分けることができます。

res/values-sw600dp/dimens.xml

ハードウェア

uses-permission でインストールを制限する

Nexus7 に電話機能はありません。また、カメラはフロントカメラしかありません。そのため uses-permission に android.permission.CALL_PHONE や android.permission.CAMERA の指定があるアプリは正常に動作しない可能性があるので注意しましょう。 アプリをインストールできないようにするには、以下のように uses-feature を指定します。

電話機能がない端末にインストールできないようにする

<uses-feature 
	android:name="android.hardware.telephony"/>

電話機能がない端末もインストールできるようにする(必ずしも必要ではない)

<uses-feature 
	android:name="android.hardware.telephony"
	android:required="false"/>

インストール可能な端末を制限する方法は こちらの記事 もあわせてご覧ください。

まとめ

Nexus7 は他の Android 端末と比べると安価なところもあり、かなり人気の端末になっています。そのため、もうリリースされているアプリも、開発中のアプリも、ぜひ Nexus7 に対応しておきたいところです。アプリによっては表示がかなり異なってくる可能性もあるので、まずは一度確認しておきましょう。

参考