Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为智能手机的具体模型选择布局参数_Java_Android_Layout - Fatal编程技术网

Java 为智能手机的具体模型选择布局参数

Java 为智能手机的具体模型选择布局参数,java,android,layout,Java,Android,Layout,我是移动开发的新手,我尝试为几种型号的智能手机和平板电脑开发一个Android应用程序。 现在我在为小米红米6a选择合适的布局参数时遇到了一些问题[ 我专门为它设计了一个布局:land-xhdpi-1440x720 但当我尝试运行我的应用程序时,它似乎选择了land-xhdpi-800x480 为什么?在这种情况下我做错了什么 顺便问一下,你能根据一些实际经验(不是Android开发者手册)向我推荐一些关于不同类型设备布局选择的文章吗 这被认为是一种不好的做法。为什么您需要为特定的设备进行布局

我是移动开发的新手,我尝试为几种型号的智能手机和平板电脑开发一个Android应用程序。
现在我在为小米红米6a选择合适的布局参数时遇到了一些问题[
我专门为它设计了一个布局:land-xhdpi-1440x720 但当我尝试运行我的应用程序时,它似乎选择了land-xhdpi-800x480

为什么?在这种情况下我做错了什么

顺便问一下,你能根据一些实际经验(不是Android开发者手册)向我推荐一些关于不同类型设备布局选择的文章吗

  • 这被认为是一种不好的做法。为什么您需要为特定的设备进行布局
  • 资源限定符的屏幕尺寸设置为dp,而不是像素。对于具有1440x720像素的xhdpi屏幕,屏幕大小将为720x360 dp
  • 这被认为是一种不好的做法。为什么您需要为特定的设备进行布局
  • 资源限定符的屏幕尺寸设置为dp,而不是像素。对于具有1440x720像素的xhdpi屏幕,屏幕大小将为720x360 dp
  • 根据,似乎不允许在布局文件夹名称中同时指定两个屏幕尺寸

    如果要检查应用程序中的设备型号,可以使用(品牌、型号和设备字段),并在运行时通过在活动/片段中调用setContentView(R.layout.*)选择适当的布局。 但是,您应该知道,将设备型号与屏幕分辨率相匹配可能具有挑战性,特别是在某些手机上,分辨率可以在“设置”中更改。 在运行时检查实际分辨率会更安全:

    DisplayManager mgr = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE)
    Display[] allDisplays = mgr.getDisplays();
    Display targetDisplay;
    if (allDisplays != null && allDisplays.length > 0) {
        //select the display to use, usually there is only one (or find the one with the highest resolution)
        targetDisplay = allDisplays[0];
        //get the resolution
          Point sizePt = new Point();
          targetDisplay.getRealSize(sizePt);
        //or
          DisplayMetrics metrics = new DisplayMetrics();
          targetDisplay.getRealMetrics(metrics);
    
    }
    
    另外请注意,由于通知栏和导航栏的高度,实际值可能不等于物理分辨率,因此请务必运行一些测试,并尝试使用比实际分辨率更一般的比较

    sizePt.x == 1440 && sizePt.y == 720
    
    根据,似乎不允许在布局文件夹名称中同时指定两个屏幕尺寸

    如果要检查应用程序中的设备型号,可以使用(品牌、型号和设备字段),并在运行时通过在活动/片段中调用setContentView(R.layout.*)选择适当的布局。 但是,您应该知道,将设备型号与屏幕分辨率相匹配可能具有挑战性,特别是在某些手机上,分辨率可以在“设置”中更改。 在运行时检查实际分辨率会更安全:

    DisplayManager mgr = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE)
    Display[] allDisplays = mgr.getDisplays();
    Display targetDisplay;
    if (allDisplays != null && allDisplays.length > 0) {
        //select the display to use, usually there is only one (or find the one with the highest resolution)
        targetDisplay = allDisplays[0];
        //get the resolution
          Point sizePt = new Point();
          targetDisplay.getRealSize(sizePt);
        //or
          DisplayMetrics metrics = new DisplayMetrics();
          targetDisplay.getRealMetrics(metrics);
    
    }
    
    另外请注意,由于通知栏和导航栏的高度,实际值可能不等于物理分辨率,因此请务必运行一些测试,并尝试使用比实际分辨率更一般的比较

    sizePt.x == 1440 && sizePt.y == 720
    

    您好,Sergey!感谢您的回复!为特定设备设计布局的唯一原因是,该应用程序应该具有非常特定的用途,并且我们只有几种类型的设备。我怀疑,这是一种更糟糕的做法,这就是为什么我试图找到一些关于为不同类型的设备设计布局的材料,并进行一些实际操作ce推荐Shello,Sergey!感谢您的回复!为特定设备设计布局的唯一原因是此应用程序应该有非常特定的用途,并且我们只有几种类型的设备。我怀疑,这是一种更糟糕的做法,这就是为什么我试图找到一些关于为不同类型的设备设计布局的资料h一些实际做法建议