我已经知道DP , SP和PX的区别了。 而在search这个话题后,我完全没有发现任何令人满意的东西 也许这个post是重复的,但是我仍然想知道从DP到PX ,从DP到SP ,从SP到PX ,从PX到SP ,从SP到DP ,从DP到SP的转换公式是什么? 我已经知道一些代码来做到这一点,但它们并不完美。
DP到PX:
public static int convertDpToPixels(float dp, Context context) { int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics()); return px; }
SP到PX:
public static int convertSpToPixels(float sp, Context context) { int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, context.getResources().getDisplayMetrics()); return px; }
DP到SP ?为什么你需要它?)
public static int convertDpToSp(float dp, Context context) { int sp = (int) (convertDpToPixels(dp, context) / (float) convertSpToPixels(dp, context)); return sp; }
请纠正我,如果我在最后一个错了,刚刚补上。
接受的答案是缺less一些有用的转换。
SP到PX
float sp = 20; float px = sp * getResources().getDisplayMetrics().scaledDensity;
要么
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, getResources().getDisplayMetrics());
PX到SP
float px = 70; float sp = px / getResources().getDisplayMetrics().scaledDensity;
DP到PX
float dp = 20; float px = dp * getResources().getDisplayMetrics().density;
要么
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());
PX到DP
float px = 70; float dp = px / getResources().getDisplayMetrics().density;
笔记
要将维度转换为整数或像素,您需要使用“ getDimensionPixelSize(R.dimen.your_dp_value) ”函数,如…
在dimens.xml中创build一个值
<dimen name="padding_10">10dp</dimen>
现在,对于像素或整数值,您可以使用如下所示:
int sizeInPixel = context.getResources().getDimensionPixelSize(R.dimen.padding_10);
以上就是android开发分享如何互相转换DP,PX,SP,特别是DP和SP?相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/addevelopment/518002.html