如何针对不同的屏幕尺寸使用不同的代码?

时间:2013-01-16 11:47:22

标签: android configuration

我正在开发具有大量支持屏幕尺寸的android程序,并且每个屏幕都有不同的布局,但是一些布局有额外的按钮和视图所以我想根据当前使用的设备更改代码,例如当我使用平板电脑我想使用不同的main.java代码 我怎样才能做到这一点?

5 个答案:

答案 0 :(得分: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
    }

答案 1 :(得分: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);
}

答案 2 :(得分:0)

要么你在android中使用碎片来满足你的条件...或者你可以包含行以检测你的代码中的屏幕大小,如果找到特定的屏幕大小,你可以有额外的按钮(或其他任何东西)连接

答案 3 :(得分:0)

要检测屏幕尺寸,请使用DisplayMetrics

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

接下来,您可以在代码中使用metrics.widthPixels和/或metrics.heightPixels(或对您有用的任何其他字段)对不同的屏幕尺寸做出反应:

if(metrics.widthPixels >= 500) {
  // Support code for additional buttons at a width of 500 and larger
}

答案 4 :(得分: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;
}