我可以通过编程方式更改设备DPI吗?

时间:2012-05-25 07:54:34

标签: android

我想知道我是否可以更改设备,它决定应该选择哪个布局或者应该选择/缩放哪个图形。此更改只会影响我的应用程序。我能以某种方式设置DPI吗?

我这样做的原因是这款手机:http://www.gsmarena.com/samsung_p1000_galaxy_tab-3370.php它的DPI值非常差240DPI,而它只有170PPI,应该被认为是160DPI设备。 我有相当大的布局大图形,在mdpi看起来很棒,但是在hdpi上它们不合适,它们只是很大。

也许你有另一个解决方案而不是改变设备DPI?

3 个答案:

答案 0 :(得分:13)

是的,这是可能的。 以下将dpi设置为240.虽然您必须以某种方式刷新活动,例如重启申请。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.density = 1.5f;
metrics.densityDpi = 240;
metrics.heightPixels = 1104;
metrics.widthPixels = 1920;
metrics.scaledDensity = 1.5f;
metrics.xdpi = 254.0f;
metrics.ydpi = 254.0f;
getResources().getDisplayMetrics().setTo(metrics);

答案 1 :(得分:4)

无法以编程方式更改设备dpi。您应该创建应用程序 支持多屏幕。看看documentation

希望这些链接可以帮助您

Designing for Multiple Screens

Working with Multiple Android Screens

答案 2 :(得分:0)

三星Galaxy Tab GT-P1000从layout-xhdpi获取布局,如果不存在那么它会显得很大。

尝试根据documentation支持应用的倍数屏幕分辨率 你必须为你的应用设计替代布局和绘图