字体用sp android,【安卓】设计师给的布局和字体尺寸单位为px,在写代码的时候要如何转换成Android用的dp和sp ?...

问题如题描述,设计给的尺寸都是px的,而且也不告诉他们在什么尺寸和分辨率的屏幕上做的设计?作为程序员要如何转换单位?

我不是在问px与dp之间如何转换的问题。而是由设计师的px如何转换成写在xml里的dp的问题。

回答

非战斗人员请远离, 现在开撕!

遇到题主这种情况, 你只能告诉你们美工(这里不能叫他们为设计师): 这做不了!!!

但凡设计App UI, 都是要在一个主流的标准分辨率下来设计的, 然后你才能找到对应的屏幕密度, 最后才能进行px到dpi的转换.

如果脱离这个原则, 那就是耍流氓, 最后你实现出来失了真, 和UI设计稿相去甚远, 那都不是你的事.

运算方法:

知道了设计稿的分辨率, 以及该分辨率一般对应的屏幕密度后, 按如下公式计算:

dpi = px / density

p.s. density 即为 Device Metrics 中对应Density一列的值

p.p.s. 答主不要在看这个热血的回复之后, 就热血地和你们美工去撕逼了呀, 有事还是要好好说的呢 [捂脸] [认怂] 2333

首先要知道设计图里面的屏幕尺寸是多少

一般都是1080×1980(?或者其他), 通常都属于xxhdpi, 也就是1dp相当于3px

如果设计图屏幕宽只有480(或者左右), 那么1dp应该就是1px了

1dp定义为屏幕密度值为160ppi时的1px,即,在mdpi时,1dp = 1px。 以mdpi为标准,这些屏幕的密度值比为:ldpi : mdpi : hdpi : xhdpi : xxhdpi = 0.75 : 1 : 1.5 : 2 : 3;即,在xhdpi的密度下,1dp=2px;在hdpi情况下,1dp=1.5px。其他类推。

1dp=(屏幕ppi/ 160)px

public static float px2dp(Context context, float pxVal)

{

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

return (pxVal / scale);

}

转换方法: px —> dp

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值