0

サポートされている画面サイズが多く、画面ごとにレイアウトが異なるAndroidプログラムを開発していますが、一部のレイアウトには余分なボタンとビューがあるため、タブレットを使用する場合など、現在使用しているデバイスに応じてコードを変更したい別の main.java コードを使用したいのですが、どうすればよいですか?

4

5 に答える 5

1

アクティビティでさまざまな画面サイズを確認し、それに適切な xml を使用する必要があると思います。次のコードが機能する可能性があります

DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    final int height=dm.heightPixels;
    final int width=dm.widthPixels;

    if(width == 720 || width==1280 && height == 1280 || height==720)    //galaxy s3
    {
      //code to select xml file
    }
于 2013-01-16T11:56:26.350 に答える
1

そのための res フォルダーに値を追加できます。

- values-large
    * booleans.xml
- values
    * booleans.xml

各 booleans.xml には異なる値が必要です。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="isTablet">true</bool>    
</resources>

ブール値の「isTablet」の代わりに、必要に応じてサイズで分けることができます。次に、この値を取得してコードで使用できます。

public static boolean isTablet(Context context) {
    return context.getResources().getBoolean(R.bool.isTablet);
}
于 2013-01-16T11:56:33.760 に答える
0

あなたの条件を満たすためにAndroidでフラグメンテーションを使用します...または、コードに画面サイズを検出する行を含めることができ、特定の画面サイズが見つかった場合は、追加のボタン(またはその他のもの)を接続できます

于 2013-01-16T11:54:46.087 に答える
0

画面の寸法を検出するには、次を使用しますDisplayMetrics

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

コード内metrics.widthPixelsで and/or metrics.heightPixels(またはその他の便利なフィールド) を使用して、さまざまな画面サイズに反応させることができます。

if(metrics.widthPixels >= 500) {
  // Support code for additional buttons at a width of 500 and larger
}
于 2013-01-16T11:57:32.120 に答える
0

画面サイズを取得するには:

public static double getScreenSize(WindowManager windowManager) {
        DisplayMetrics metrics = new DisplayMetrics(); 
        windowManager.getDefaultDisplay().getMetrics( metrics ); 
        float widthInInches = metrics.widthPixels / metrics.densityDpi; 
        float heightInInches = metrics.heightPixels / metrics.densityDpi;

        return  Math.sqrt(Math.pow(widthInInches,2) + Math.pow(heightInInches,2));
    }

タブレットかどうかを判断するには:

public final static double TABLET_SIZE = 5.0; //inch

    public static boolean IsTablet(WindowManager windowManager) {
        double inch = getScreenSize(windowManager);             
        return inch >= TABLET_SIZE;
    }

縦向きかどうかを判断するには:

public static boolean isPortraitOrientation(Context context) {
    context.getResources().getConfiguration();
    return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
}
于 2013-01-16T12:02:31.843 に答える