android效果图换算比例,关于android 图标标准 ,效果图切图标准, 单位标准换算

32 X 32

48 X 48

72 X 72

96 X 96

144 X 144

1-1

1-1.2

1-1.5

1-2

1-2.2

public class DisplayUtil {

public static int dip2px(Context context, float dipValue){

final float scale = context.getResources().getDisplayMetrics().density;

return (int)(dipValue * scale + 0.5f);

}

public static int px2dip(Context context, float pxValue){

final float scale = context.getResources().getDisplayMetrics().density;

return (int)(pxValue / scale + 0.5f);

}

}

基于屏幕密度的抽象单位,设备无关的点,用于说明与密度无关的尺寸和位置。这些单位是相对于一个160dpi的屏幕,所有一个dp是160dpi屏幕上的一个点。

屏幕密度为160

1dip=1px

density = densityDpi /160

px = dip * (densityDpi / 160)

DisplayMetrics dm =getResources().getDisplayMetrics();

int w_screen = dm.widthPixels;

int h_screen = dm.heightPixels;

密度

int dpi = dm.densityDpi;

log:

….. 160

……….. 240

720 , 1280, 320

1080 , 1920 , 480

low=120

Medium =160

High = 240

xH =320

xxH = 480

计算代码缘由:

android系统转换代码

// TypedValue 中的这个函数负责将dp,sp,px等维度信息转换成像素

public static int complexToDimensionPixelSize(int data,

DisplayMetrics metrics)

{

final float value = complexToFloat(data);

final float f = applyDimension(

(data>>COMPLEX_UNIT_SHIFT)&COMPLEX_UNIT_MASK,

value,

metrics); // 这个函数负责完成转换,其实现请往下看

final int res = (int)(f+0.5f); // 这里做了一个四舍五入

if (res != 0) return res;

if (value == 0) return 0;

if (value > 0) return 1;

return -1;

}

// 从这个函数的实现可以看出android系统对dp和sp处理的区别

public static float applyDimension(int unit, float value,

DisplayMetrics metrics)

{

switch (unit) {

case COMPLEX_UNIT_PX:

return value; // px不需要做转换

case COMPLEX_UNIT_DIP:

return value * metrics.density; // dp转换成px

case COMPLEX_UNIT_SP:

return value * metrics.scaledDensity; // sp转换成px

case COMPLEX_UNIT_PT:

return value * metrics.xdpi * (1.0f/72);

case COMPLEX_UNIT_IN:

return value * metrics.xdpi;

case COMPLEX_UNIT_MM:

return value * metrics.xdpi * (1.0f/25.4f);

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值