2012-03-13 22 views
0

複数の異なる画面サイズをサポートするアプリケーションを開発しています。私はタブレットと携帯電話のデザインが異なっています。私はタブレットにリスト断片とウェブ断片を持っています。私は電話でリストの断片を持っています。私の要件は、ユーザーがリストビューをクリックすると、タブレットの場合はデータを更新しなければならず、電話の場合は次のアクティビティに移動する必要があるということです。ユーザーがAndroidでタブレットまたは電話を使用しているかどうかを確認する方法

どのようにすればいいですか?

おかげ

+0

http://stackoverflow.com/questions/5832368/testt-or-phone-android –

+0

ここでは簡単な答えが見つかります: http://stackoverflow.com/a/9308284/1750829 –

答えて

0

は、さてあなたはこのようにそれを行うことができます。

private boolean isTabletDevice() { 
if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb 
    // test screen size, use reflection because isLayoutSizeAtLeast is only available since 11 
    Configuration con = getResources().getConfiguration(); 
    try { 
    Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast", int.class); 
    Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE 
    return r; 
    } catch (Exception x) { 
    x.printStackTrace(); 
    return false; 
    } 
} 
return false; 
} 

アイデアはちょうどだったAPIレベルを確認するために、将来的にはタブレットやスマートフォンは、同じAndroidのバージョンを使用することができます(これらの理由ICSで始まるスマートフォン版のタブレット版をマージしました)、これは良い考えではありません。

低レベルのAndroidデバイスAPIレベル< 9は、画面の解像度を確認するために必要な方法をサポートしていないため、反射と下位互換性があるようにしてください。

幸運、画面のサイズと Arkde

1

は唯一私が思う:

private boolean isTablet() 
{ 
    Display display = getWindowManager().getDefaultDisplay(); 
    DisplayMetrics displayMetrics = new DisplayMetrics(); 
    display.getMetrics(displayMetrics); 

    int width = displayMetrics.widthPixels/displayMetrics.densityDpi; 
    int height = displayMetrics.heightPixels/displayMetrics.densityDpi; 

    double screenDiagonal = Math.sqrt(width * width + height * height); 
    return (screenDiagonal >= 9.0); 
} 
+0

9インチ以上を確認しますか? – waqaslam

+0

はい、デバイスがそうであればtrueを返します –

+0

これは不正確なdensityDPI値を返す一部のデバイスでは機能しません。たとえば、一部のデバイスでは、物理DPIが大きく異なる場合に160を報告することがあります。 – SkolVikingsGuy

1

がレイアウト-大、レイアウトXLARGEとレイアウトのレイアウトファイルに異なるIDを定義します。

のres /レイアウト

<FrameLayout android:id="@+id/normal>...</FrameLayout> 

のres /レイアウト-大

<FrameLayout android:id="@+id/large>...</FrameLayout> 

そのタブレット、携帯電話は(タブレットは、Android 2.2と電話できたを実行することができませんしてくださいかどうかを検出するためにIDを使用4.0を実行しているので、これが検出する最善の方法です)

+0

idを使ってどのIDかを確認すると、特定のレイアウトコンポーネントが存在するかどうかを確認することを意味しますか?以下のようにします。findViewById(R.id.fragment_container)== null; ? – fersarr

関連する問題