Kus*_*hal 1 compatibility android resolution fragmentation
我的Android应用程序在480x800像素分辨率下看起来很棒,但它在LDPI屏幕上突破240x400像素.我知道我可以在活动中获得屏幕的缩放因子,根据屏幕分辨率getResources().getDisplayMetrics().density可以给出确切的float值.
在我的应用程序,我已经使用RelativeLayout和ImageViewS中它,并设置使用图像的边缘setMargins(),这种方法是用像素在int其顶部,左侧,底部和正确的价值观,我怎么可以设置使用DPI因素我这些价值观?(这是一个浮动).我们有Math.floor()但是我使用像素将图像定位在非常特定的位置,并且方法返回的DPI因子在小数位上具有非常特定的值,这是不可忽略的,因此转换int对我来说不起作用.
更新
另外,我lp.setMargins(100,200,0,0);用来设置边距,我将使用DPI因子从设备中获得哪些修改?
PS我知道它更像是一个数学问题,而不是编程,但我对数学很差,对不起.
看起来我太早提出问题而不是摆弄自己,但也注意到我并不是第一个面对这个问题的人.
所以,这是我找到的解决方案.
我在Activity类中创建了以下方法.
private int px(float dips)
{
float DP = getResources().getDisplayMetrics().density;
return Math.round(dips * DP);
}
Run Code Online (Sandbox Code Playgroud)
这会将给定dp值转换为适当的像素.您可以使DP方法中使用的变量为全局变量,并在onCreate()方法中而不是在其中初始化px(),只是为了使方法快速执行.
用法:
lp.setMargins(px(100),px(200), 0, 0);
Run Code Online (Sandbox Code Playgroud)
或者,如果您不是px()为此创建并具有DP全局性.
lp.setMargins(100 * Math.round(DP), 200 * Math.round(DP), 0, 0);
Run Code Online (Sandbox Code Playgroud)
但是,使用方法使其看起来更清晰,更易读.:-)
| 归档时间: |
|
| 查看次数: |
6009 次 |
| 最近记录: |