繁体   English   中英

dp和android不同屏幕尺寸之间的关系

[英]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

完成制作普通/中型布局后,请按照以下步骤操作:

  1. 将普通尺寸转换为其他屏幕尺寸。
  2. 将您的标准布局xml文件复制到其他文件夹中。
  3. 根据您所在的文件夹更改所用尺寸的后缀
  4. 在您的drawable文件夹中调整图像资源的大小(宽度和高度-与转换调暗度相同的技术),然后将它们放在各自的drawable文件夹中(drawable-ldpi,drawable-mdpi,drawable-hdpi,drawable-xdpi等) )。
  5. 然后,您的布局应该可以在每台设备上正确定位。

用于转换值

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM