[英]Relation between dp and android different screen size
我想根据屏幕尺寸而不是根据密度来制作变暗的文件夹,那么每种屏幕尺寸的dp值将是多少。 我只想根据屏幕尺寸而不是根据密度来调整我的DP值,因此是否有用于计算不同屏幕尺寸的dp的公式。 由于密度,像素和dp之间存在关系。 但是我想要不同的屏幕尺寸。 就像是普通xhdpi屏幕和普通xxhdpi屏幕一样,按钮的大小应与密度无关,如“ DP”的名称所示
在res
文件夹中为所有设备创建三个不同的Layouts Folder
夹,并相应地使用尺寸。
通用布局文件夹
res/layout-small
res/layout-normal
res/layout-large
res/layout-xlarge
完成制作普通/中型布局后,请按照以下步骤操作:
用于转换值
0.75 - ldpi (small) //mdpi dimens *0.75
1.0 - mdpi (normal) //First create these dimensions
1.5 - hdpi (large) //mdpi dimens *1.5
2.0 - xhdpi (xLarge) //mdpi dimens *2.0
例如
android:layout_width="66dip" //in normal
android:layout_width="100dip"//in large 66*1.5=100(approx)
android:layout_width="52dip" //in small 66*0.75=52(approx)
还引入了新的限定符-SmallestWidth-AvailableScreenWidth-AvailableScreenHeight
在此处了解更多信息https://developer.android.com/guide/practices/screens_support.html
如果您正在寻找Java代码
/// convert dp to pixels
public static int dp2px(Context context, float dp) {
return Math.round(dp * context.getResources().getDisplayMetrics().density);
}
我希望这有帮助。
public static float dpToPx(Resources rs,float dp){
DisplayMetrics metrics = rs.getDisplayMetrics();
float px = dp * (metrics.densityDpi/160f);
return px;
}
public static float pxToDp(Resources rs,float px){
DisplayMetrics metrics = rs.getDisplayMetrics();
float dp = px / (metrics.densityDpi / 160f);
return dp;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.