0

タブレットと電話で異なるビューを表示したかったのですが、デバイスのモードを切り替えることができません。タブレットの要件はランドスケープ モードであり、電話の要件はポートレート モードです。AndroidManifest.xml生成された 1 つの apk ファイルが要件を満たすようにするには、どのような変更を行う必要がありますか?

4

2 に答える 2

0

あなたの答えについては、以下の行を参照してください

デバイスがスマートフォンかタブレットかを判断しますか?

画面サイズを動的に検出し、画面モードをランドスケープまたはポートレート モードに設定します。

プログラムで横向きまたは縦向きモードに設定します。

Androidでプログラムでランドスケープとポートレートを制御する方法は?

于 2013-05-17T04:16:31.080 に答える
0

これを行うには、アクティビティで Java コードを使用します

  if(isTabletDevice)
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    else
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

isTabletDevice コード

public static boolean isTabletDevice(Context activityContext) {
    // Verifies if the Generalized Size of the device is XLARGE to be
    // considered a Tablet
    boolean xlarge = ((activityContext.getResources().getConfiguration().screenLayout & 
                        Configuration.SCREENLAYOUT_SIZE_MASK) == 
                        Configuration.SCREENLAYOUT_SIZE_XLARGE);

    // If XLarge, checks if the Generalized Density is at least MDPI
    // (160dpi)
    if (xlarge) {
        DisplayMetrics metrics = new DisplayMetrics();
        Activity activity = (Activity) activityContext;
        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

        // MDPI=160, DEFAULT=160, DENSITY_HIGH=240, DENSITY_MEDIUM=160,
        // DENSITY_TV=213, DENSITY_XHIGH=320
        if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT
                || metrics.densityDpi == DisplayMetrics.DENSITY_HIGH
                || metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM
                || metrics.densityDpi == DisplayMetrics.DENSITY_TV
                || metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) {

            // Yes, this is a tablet!
            return true;
        }
    }

    // No, this is not a tablet!
    return false;
}
于 2013-05-17T04:18:24.337 に答える