dar*_*rsh 4 android pixel density-independent-pixel
我需要将密度无关的像素转换为活动中的像素.我尝试在onCreate中使用此方法
float pix = dipValue * getResources().getDisplayMetrics().density;
pixel = Math.round(pix);
Run Code Online (Sandbox Code Playgroud)
我尝试了另一种方法
Resources r = getResources();
float pix = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 35,r.getDisplayMetrics());
value = Math.round(pix);
Run Code Online (Sandbox Code Playgroud)
两者都产生相同的价值.我认为问题不在于方法,而在于资源.我应该在Manifest文件中进行任何更改吗?
<supports-screens android:resizeable=["true"| "false"]
android:smallScreens=["true" | "false"]
android:normalScreens=["true" | "false"]
android:largeScreens=["true" | "false"]
android:xlargeScreens=["true" | "false"]
android:anyDensity=["true" | "false"]
android:requiresSmallestWidthDp="integer"
android:compatibleWidthLimitDp="integer"
android:largestWidthLimitDp="integer"/>
Run Code Online (Sandbox Code Playgroud)
你有没有尝试过
px = dp * (dpi / 160)
Run Code Online (Sandbox Code Playgroud)
与密度无关的像素相当于160 dpi屏幕上的一个物理像素,这是系统为"中等"密度屏幕假定的基线密度.在运行时,系统根据所使用屏幕的实际密度,根据需要透明地处理dp单元的任何缩放.dp单位到屏幕像素的转换很简单:px = dp*(dpi/160).例如,在240 dpi屏幕上,1 dp等于1.5个物理像素.在定义应用程序的UI时,应始终使用dp单位,以确保在具有不同密度的屏幕上正确显示UI.
请查看此链接以获取更多详细信息.
| 归档时间: |
|
| 查看次数: |
1679 次 |
| 最近记录: |