我有两个设备,三星Tab 4和三星J Max。屏幕尺寸和分辨率相同(屏幕尺寸:7“ 分辨率:800x1280)但是当我运行以下代码时,它返回不同的值。
Configuration configuration = this.getResources().getConfiguration();
int screenWidthDp = configuration.screenWidthDp;
int densityDPI = configuration.densityDpi;
Samsung Tab 4 screenWidthDp = 600 densityDPI = 213
Samsung J Max screenWidthDp = 533 densityDPI = 240
有人知道原因吗?
答案 0 :(得分:2)
制造商决定设备屏幕的密度设置。通常它会尝试将该设置与预定义的密度桶对齐(例如 hdpi 或 tvdpi )。
这里的主要区别在于J Max是作为大型手机销售而Tab 4是平板电脑。在Android开发人员文档中,有一些共识认为平板电脑的定义是一个屏幕,其最小宽度至少为600dp(想想layout-sw600dp
资源文件夹)。
因此对于Tab 4,三星选择使用tvdpi密度桶,以使屏幕空间达到600dp的最小宽度,因此应用程序将在平板电脑模式下工作。对于大型手机,他们选择了hdpi的密度桶,因此屏幕的最小宽度正好在600dp以下,533dp,因此应用程序仍将以手机模式显示。