我想确定当前设备的代码中是否有小型,中型,大型或Xlarge屏幕.我在SDK文档中找不到任何可以帮助我获取该信息的内容.我所看到的所有方法/类只提供绝对值(即屏幕大小,以像素为单位,屏幕密度等).
有没有办法告诉我在代码中运行的是什么类型的屏幕?
Fel*_*lix 56
我最终使用bool放在不同存储桶文件夹中的资源.我只需要区分普通(小/中)和大(大/大)屏幕,所以我这样做:
值/ bools.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="screen_large">false</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
值-大/ bools.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="screen_large">true</bool>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后,我只是打电话getBoolean(R.bool.screen_large)告诉屏幕是否大.这样,100%的平台可以决定设备的屏幕.
密度和屏幕类型之间存在差异.

由于您可以获得像素和密度,因此您始终可以使用静态Helper类来确定它.
您可以使用它将像素转换为dp
public static float dpFromPixels(int pixels) {
float dp = (float) ((pixels) / Density.scale);
return dp;
}
Run Code Online (Sandbox Code Playgroud)
我认为您可能想要从像素中添加或减去.5f,因为从dp获取像素来自该代码.
public static int pixelsFromDp(float dps) {
int pixels = (int) (dps * Density.scale + 0.5f);
return pixels;
}
Run Code Online (Sandbox Code Playgroud)
从文档中
xlarge屏幕至少为960dp x 720dp
大屏幕至少640dp x 480dp
正常屏幕至少为470dp x 320dp
小屏幕至少为426dp x 320dp
public static boolean isLargeScreen(Context context) {
int screenSize = context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK;
return screenSize >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5800 次 |
| 最近记录: |