Android中XML尺寸单位的相互转换——dp(dip)、px、sp的相互转换

官方对尺寸单位的解释

尺寸

在 XML 中定义的尺寸值。尺寸由数字后跟度量单位来指定。例如:10 px、2 in、5 sp。Android 支持以下度量单位:

dp

密度无关像素 - 基于屏幕物理密度的抽象单位。这些单位相对于 160 dpi(每英寸点数)屏幕确立,在该屏幕上 1 dp 大致等于 1 px。在更高密度的屏幕上运行时,用于绘制 1 dp 的像素数量会根据屏幕 dpi 按照适当的系数增加。同样,在更低密度的屏幕上,用于绘制 1 dp 的像素数量会相应减少。dp 对像素的比率会随着屏幕密度的变化而变化,但不一定成正比。如要使布局中的视图尺寸根据不同的屏幕密度正确调整大小,一种简单的解决办法就是使用 dp 单位(而不是 px 单位)。换句话说,它可在不同设备上提供一致的界面元素大小。

sp

缩放无关像素 - 这和 dp 单位类似,但它也会根据用户的字体大小偏好设置进行缩放。建议您在指定字体大小时使用此单位,以便字体大小会根据屏幕密度和用户偏好设置进行调整。

px

像素 - 对应于屏幕上的实际像素数。建议不要使用这种度量单位,因为不同设备的实际呈现效果可能不同;不同设备的每英寸像素数可能不同,屏幕上的总像素数也可能有差异。

过于简单,上码吧。。。


import android.content.Context;

/**
 * @author huazai
 * @since 2022/9/16 13:50
 * @desciption 单位转换(注意:由于每次计算结果都强转为int类型,小数部分直接抹除,1.9和1.1一样,所以加上0.5f四舍五入一下,尽量提高精度)
 **/
public class UnitConversion {

    /**
     * dp转换为px
	 * @param context   上下文环境
	 * @param dipValue  需要转换的值
	 * @return int
     * @createtime 2022/9/16 13:51
    **/
    public static int dipToPx(Context context, int dipValue){
        final float density = context.getResources().getDisplayMetrics().density;
        return (int) (dipValue * density + 0.5f);
    }

    /**
     * px转换为dip
	 * @param context 上下文环境
	 * @param pxValue 需要转换的值
	 * @return int
     * @createtime 2022/9/16 13:56
    **/
    public static int pxToDip(Context context, int pxValue){
        final float density = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / density + 0.5f);
    }

    /**
     * px转换为sp
	 * @param context  上下文环境
	 * @param pxValue  需要转换的值
	 * @return int
     * @createtime 2022/9/16 14:04
    **/
    public static int pxToSp(Context context, int pxValue){
        final float density = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / density + 0.5f);
    }

    /**
     * sp转换为px
	 * @param context  上下文环境
	 * @param spValue  需要转换的值
	 * @return int
     * @createtime 2022/9/16 14:05
    **/
    public static int spToPx(Context context, int spValue){
        final float density = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * density + 0.5f);
    }
}

个人笔记,多多指点。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
XML与MATLAB格式相互转换工具箱是一种能够实现XML格式和MATLAB格式之间相互转换的工具。XML是一种用于标记结构化文档的语言,它可以存储和传输数据。而MATLAB是一种用于科学计算和数据分析的编程语言和环境。在某些情况下,我们可能需要将数据从XML格式转换为MATLAB格式,或者将MATLAB数据转换XML格式。 XML与MATLAB格式相互转换工具箱可以简化这个过程,提供了一系列函数和工具,使得XML和MATLAB数据之间的转换变得容易和高效。这些工具箱通常包括将XML数据解析为MATLAB结构的函数,以及将MATLAB结构转换XML字符串的函数。 当我们需要将XML数据转换为MATLAB数据时,我们可以使用这些工具箱提供的函数来解析XML文档,将其转换为MATLAB结构体或其他适合的数据类型。这样,我们就可以在MATLAB对数据进行进一步的分析和处理。 类似地,当我们需要将MATLAB数据转换XML格式时,这些工具箱也提供了函数来将MATLAB结构或数据转换XML字符串。这样,我们就可以将MATLAB数据保存为XML文档,或者将数据传输到其他系统或平台。 总而言之,XML与MATLAB格式相互转换工具箱为我们提供了一种简便的方式来在XML格式和MATLAB格式之间进行数据转换。无论是将XML数据转换为MATLAB数据,还是将MATLAB数据转换XML数据,这些工具箱都能帮助我们实现这一目标。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT-huazai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值