为了账号安全,请及时绑定邮箱和手机立即绑定

如何相互转换DP,PX,SP,尤其是DP和SP?

如何相互转换DP,PX,SP,尤其是DP和SP?

jeck猫 2019-12-26 14:05:43
我知道DP,SP和PX之间的区别。在搜索了这个主题之后,我发现没有什么令我完全满意。也许这个职位是一个重复的,但我还是想知道什么是从转换的公式DP到PX,和DP到SP,从SP到PX,从PX到SP,从SP到DP,从DP到SP?我知道一些代码可以做到这一点,但是它们并不完美。
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

DP至PX:


public static int dpToPx(float dp, Context context) {

    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics());

}

SP到PX:


public static int spToPx(float sp, Context context) {

    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, context.getResources().getDisplayMetrics());

}

DP到SP:


public static int dpToSp(float dp, Context context) {

    return (int) (dpToPx(dp, context) / context.getResources().getDisplayMetrics().scaledDensity);

}


查看完整回答
反对 回复 2019-12-26
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

要将Dimension转换为Integer或Pixel,您需要使用“ getDimensionPixelSize(R.dimen.your_dp_value) ”函数,例如...


在dimens.xml中赋值


<dimen name="padding_10">10dp</dimen>

现在,对于以像素或整数表示的那个值,您可以像下面这样使用:


int sizeInPixel = context.getResources().getDimensionPixelSize(R.dimen.padding_10);


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 819 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信