What's an easy way to check the screen size in Android?
我需要能够在 Android 上为手机提供与平板电脑不同的 UI。但我一直在寻找一种简单、直接的方法来运行时检查屏幕尺寸/分辨率。我已经搜索了很多,我得到的所有答案要么告诉我屏幕密度,这不是我想要的,要么属于"使用 dp"或"将不同的图像放入可绘制文件夹。"这些都不能完全满足我的需要。我在 StackOverflow 上看到的所有答案要么属于上述类别,要么给出了已弃用的解决方案的答案。
我认为我有一个可行的解决方案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Configuration configuration = getResources().getConfiguration(); boolean bigScreen = configuration.screenLayout == configuration.SCREENLAYOUT_SIZE_LARGE || configuration.screenLayout == configuration.SCREENLAYOUT_SIZE_XLARGE; if(bigScreen) { Intent userCreationIntent = new Intent(getApplicationContext(), AboutUs.class); startActivityForResult(userCreationIntent, 0); } else { Intent userCreationIntent = new Intent(getApplicationContext(),AboutUsSmall.class); startActivityForResult(userCreationIntent,0); } |
问题在于,这段代码还将我的 7 英寸平板电脑 Nexus 7 发送到 AboutUsSmall 布局/类。
我做错了什么?更重要的是,我怎样才能做到这一点?
改成:
1 2 3 4 5 | public static boolean isLargeScreen(Context context) { return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; } |
这对于 Nexus 7 将返回 true。将
我猜您有很好的理由避免针对不同屏幕尺寸使用 android 标准。我相信 Arash 有更清洁的解决方案,但这是另一个可能更好地回答您在标题中提出的问题的解决方案:
1 2 3 4 5 6 7 | DisplayMetrics dm = getResources().getDisplayMetrics(); double density = dm.density * 160; double x = Math.pow(dm.widthPixels / density, 2); double y = Math.pow(dm.heightPixels / density, 2); double screenInches = Math.sqrt(x + y); log.info("inches: {}", screenInches); |
这个和这篇文章很好地解释了它。祝你好运!
对于不同的屏幕尺寸,以下是应用程序中的资源目录列表,该应用程序为不同的屏幕尺寸提供不同的布局设计,并为小、中、高和超高密度屏幕提供不同的位图可绘制对象。您可以在 res 文件夹中使用不同大小的布局文件,也可以根据密度对可绘制图像有所不同..
1 2 3 4 5 | res/layout/my_layout.xml // layout for normal screen size ("default") res/layout-small/my_layout.xml // layout for small screen size res/layout-large/my_layout.xml // layout for large screen size res/layout-xlarge/my_layout.xml // layout for extra large screen size res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation |
Android 会自动打开与屏幕尺寸相对应的特定布局。
您可以在此处查看有关多屏的开发人员网站