0

私のアプリケーションは、次のロジックを使用して、デュアルペインまたはシングルペインで表示するかどうかを決定することになっています:

  1. すべての画面サイズで、SINGLE-PANE の縦表示の場合
  2. SMALL および NORMAL 画面サイズの場合、SINGLE-PANE で横表示の場合
  3. LARGE および XLARGE 画面サイズの場合、DUAL-PANE で横表示の場合

私は Android 2.3.3 SDK 向けに開発しているため、Android 3.0 SDK の優れた機能はここでは適用できません。以下で開発した関数は、すべての画面サイズと向きの組み合わせに対して常に SINGLE-PANE を返します。ここで何がうまくいかないのでしょうか?

/**
 * Determine if a dual pane is appropriate.
 * 
 * @param null
 * @return boolean
 */

public boolean isDualPane() {

    boolean dualPane    = false;

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {

        if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {

            dualPane    = true;
        }
    }

    Log.d("ORIANTATION", (dualPane) ? "DUAL PANE" : "SINGLE PANE");

    return dualPane;
}
4

2 に答える 2

2

私は答えを見つけました。上記の機能で問題ありません!問題は、エミュレータの構成にありました。WVGA800 デバイスを作成し、LCD 密度を 160 ではなく 240 のままにしました。これにより、大きなサイズではなく通常のサイズになります。そのため、ステートメントConfiguration.SCREENLAYOUT_SIZE_LARGEは常に 3 ではなく 2 に評価されました。そのため、if statement毎回失敗しました。今はうまくいきます。

もう1つ、これ

        if ((getResources().getConfiguration().screenLayout 
           & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {

            dualPane    = true;
        }

次のように変更する必要があります。

        if ((getResources().getConfiguration().screenLayout 
            & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE) {

            dualPane    = true;
        }

XLARGE スクリーンにも対応するため。

于 2012-05-08T10:41:19.237 に答える
0

デュアルペインについてはよくわかりませんが、XMLからSmall-Normal-Large-Xlargeレイアウトの構成を制御することをお勧めします。

例 :

  1. すべての画面サイズ-縦向き。デフォルトのレイアウトフォルダを取ります: res / layout
  2. 小さい画面サイズ-横向き: 解像度/レイアウト-小さな土地
  3. 大画面サイズ-横向き:解像度/レイアウト-大地

それは多分あなたを助けます。:)

参照:画面サイズ

于 2012-05-07T10:02:01.787 に答える