我想根据屏幕尺寸而不是根据密度制作尺寸文件夹,因此每个屏幕尺寸的dp值是多少。我想根据屏幕尺寸而不是根据密度调整我的DP值,所以有任何公式来计算不同屏幕尺寸的dp。由于密度,像素和dp之间存在关系。但我希望它适用于不同的屏幕尺寸。就像normal-xhdpi屏幕和normal-xxhdpi屏幕一样,按钮的大小应该与密度无关,如名称所暗示的“DP”
答案 0 :(得分:1)
在Layouts Folder
文件夹中为所有设备创建三个不同的res
,并相应地使用这些维度。
通用布局文件夹
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)
此外,还推出了新的限定符 - 最小宽度 - 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);
}
我希望这会有所帮助。
答案 1 :(得分:0)
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;
}