Android开发之单位转换,dp、px、sp

Android开发之单位转换,dp、px、sp

在开放过程中,毕竟UI不是程序员画的,碰到专业技术好点的美工还好,碰到刚开始搞ui的,提供的图片尺寸,字体大小,切图尺寸各种让你无奈。在这里可以解决美工提供的尺寸单位不是自己想要的,可以进行相互转换。

1.现在目前市面的手机屏幕尺寸

480*800       dp表示:   hdpi    密实系数:1.5

720*1280     dp表示:   xhdpi    密实系数:2

1080*1920   dp表示:   xxhdpi   密实系数:3  

1440*2560   dp表示:   xxxhdpi   密实系数:3.5  

但是有的UI真的是懒惰,为适配Android 和 ios 而做一套ios的规格尺寸(1242 x 2208)图片去适配两种系统,这种是最烦人的。怎么办?

可以这样认为:1242 x 2208        密实系数:3.5

 

2.如果用代码进行转换:获取密实系数,结算转换

	/**
	 * dp转px
	 * @param dp
	 * @return
	 */
	public static int dip2px(int dp)
	{
		float density = getContext().getResources().getDisplayMetrics().density;
		return (int) (dp*density+0.5);
	}

	/** px转换dip */
	public static int px2dip(int px) {
		final float scale = getContext().getResources().getDisplayMetrics().density;
		return (int) (px / scale + 0.5f);
	}
	/** px转换sp */
	public static int px2sp(int pxValue) {
		final float fontScale = getContext().getResources().getDisplayMetrics().scaledDensity;
		return (int) (pxValue / fontScale + 0.5f);
	}
	/** sp转换px */
	public static int sp2px(int spValue) {
		final float fontScale = getContext().getResources().getDisplayMetrics().scaledDensity;
		return (int) (spValue * fontScale + 0.5f);
	}

 

3.如果实在xml中写尺寸:

根据UI提供的图片尺寸选择密度系数,然后要用的尺寸   除以或者乘以  系数+0.5=你要的。

例如:图片一般标注的都是px,但是我们要用dp。可以这样转换  px / 系数+0.5=dp。

例如:图片上标注的字体也是px,但是我们要用sp。还是用上一行的那个公式处理转换。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值