3

タブレットサイズの画面(特にGalaxy Tab 10.1)もサポートするように更新する予定の携帯電話でAndroidアプリを作成しています。私はすべてを理解したres/layoutので、それは問題ありません。ただし、で画面の向きを固定するようにアプリを作成しAndroidManifest.xml、をに設定しましandroid:screenOrientation="portrait"た。

ここで、次のようにします。画面サイズごとに向きを固定し、一方を縦向き(レイアウト-小)に固定し、もう一方を横向きに固定します

それはまだ縦向きから横向きに、そしてその逆に切り替わるので、使用して、私が望むことをres/layout-small-landres/layout-large-portません。さらに悪いことに、スマートフォンを横向きに回転させるとアプリがクラッシュします。これは、res/layout-small-landが存在しないためです。

XMLファイルを定義するだけでこれを行うことはできますか、それともコードを追加する必要がありますか?

4

3 に答える 3

6

マニフェストの向きを修正する代わりに、を使用できますsetRequestedOrientationonCreate各アクティビティの方法について、タブレットまたはスマートフォンを使用しているかどうかを確認し、目的の向きを設定します。

別のオプションは、ニーズに応じて、さまざまな画面サイズの複数のAPKを作成することです。

于 2012-10-31T13:21:30.320 に答える
-1

はい、同じレイアウトを作成できます。ここで受け入れられた答えを参照してください:SO

それはあなたの質問を解決します。

アップデート

画面サイズに従って設定する場合は、以下のコードを参照して画面の密度を取得してください。それと画面サイズに基づいて、プログラムで向きを設定する必要があります。

密度をチェックするコード:

public void ScreenSupport(){
     Display display = getWindowManager().getDefaultDisplay();
     DisplayMetrics dm = new DisplayMetrics();
     display.getMetrics(dm);

     int width = display.getWidth();
     int height = display.getHeight();
     int density = dm.densityDpi;
     String densityString = null;

     if(density == DisplayMetrics.DENSITY_HIGH) {
         densityString = "HDPI";
     } else if(density == DisplayMetrics.DENSITY_MEDIUM) {
         densityString = "MDPI";
     } else if(density == DisplayMetrics.DENSITY_LOW) {
         densityString = "LDPI";
     }else if(density == DisplayMetrics.DENSITY_DEFAULT) {
         densityString = "DEFAULT";
     }

    /* System.out.println("Screen Height is: "+height+ " and Width is: "+width);
     System.out.println("Screen Support: "+densityString);*/
}
于 2012-10-31T13:05:29.943 に答える
-2

android:screenOrientation="portrait"マニフェスト.xmlから削除するだけです

また、layout-large-land、layout-small-landを追加し、layout-large、layout-smallフォルダーも保持します。

それがあなたのために働くことを願っています。コーディングをお楽しみください:)

于 2012-10-31T12:56:24.947 に答える