2012/03/06

Android:タブレットorスマートフォンのフラグをリソースに定義する


リソースの設定修飾子を利用すれば、デバイスがタブレットなのか、スマートフォンなのかが
楽に判断でき、コードも非常にシンプルになります。

実装にあたっては、下記のようにリソースを配置します。

res/values/bools.xml
<bool name="isTablet">flase</bool>

res/values-sw600dp/bools.xml
<bool name="isTablet">true</bool>

上記の構成でリソースを配置して、isTabletのbool値を定義します。
(※この例では最小描画幅600dp以上をタブレットとして扱います)
これを読み込む下記のコードで、端末がタブレットかスマートフォンか判断できます。
public static boolean isTablet(Context context) {
    return context.getResources().getBoolean(R.bool.isTablet);
}

使用する場合は対象のAndroidバージョンが3.2以上である必要があります。
(より古いバージョンではサイズセットを使用する代替案があります)
sw600dpのサイズ修飾子についての詳細は下記になります。
http://yuki312.blogspot.com/2012/03/androidsw.html

この仕組みを利用して「最小画面幅が600dp以上であればタブレット」という条件の下、
システムの最適なリソース選択手順を利用して、タブレットかスマートフォンかを判断す
ることが可能です。

余談:
つまるところ「タブレットかスマートフォンか?」は「画面領域に余裕があるかないか?」
であることがほとんどです。それを考えるとisTabletというメソッド名はあまりよい名前
とは言えないかもしれません。

以上です。