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);

Nexy 您可以在代码中使用metrics.widthPixels和/或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 回答