【问题标题】:How can I use different codes for different screen sizes?如何为不同的屏幕尺寸使用不同的代码?
【发布时间】:2025-12-16 00:35:02
【问题描述】:

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

【问题讨论】:

    标签: android configuration


    【解决方案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】:

    我认为您必须在活动中检查不同的屏幕尺寸,然后为此使用适当的 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
        }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        要检测屏幕尺寸,请使用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
        }
        

        【讨论】:

          【解决方案5】:

          要获取屏幕尺寸,请使用:

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

          【讨论】:

            最近更新 更多