android 字体px转sp,如何相互转换DP,PX,SP,尤其是DP和SP?

接受的答案缺少一些有用的转换。

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;

笔记

我在(20和70)上方选择的浮点数是任意值。您可以根据需要插入不同的号码。

px指像素。设备每英寸屏幕空间具有的像素数称为密度。

dp表示与密度无关的像素。也就是说,无论使用哪种设备,实际大小都应该相同。例如,如果将视图设置为100 dp宽视图,则新高密度电话上的视图将与旧低密度电话上的视图具有相同的宽度。(100 px另一方面,如果将宽度设置为,则在低密度电话上看起来会很大,而在高密度电话上看起来会很小。)密度以每英寸点数(DPI)为单位。公式是px = dp * density。因此,您只需乘以或除以密度即可在px和之间进行转换dp。

sp表示比例无关的像素。它仅用于字体,而不用于视图。它类似于,dp它也影响用户的偏好。考虑到用户偏好的这种密度称为缩放密度。例如,将TextView字体设置为大小30 sp将使文本在所有设备上通常看起来是相同的物理尺寸。但是,您的祖母可能会在手机设置30 sp中将首选字体大小最大化,因此手机上的文字看起来会比您的手机大。公式是px = sp * scaledDensity。

DP和SP的含义

DP到SP的转换通常没有用

你可能感兴趣的:(android,字体px转sp)