Android开发之dp、sp、px转换-SizeUtils

原创 2018年04月15日 16:27:15

对于开发中dp、px间的转换,sp、px间的转换,获取view测量宽度和高度,进行汇总

dp转px
public static int dp2px(final float dpValue) {
        final float scale = Utils.getApp().getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
}
px转dp
public static int px2dp(final float pxValue) {
        final float scale = Utils.getApp().getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
}
px转sp
public static int px2sp(final float pxValue) {
        final float fontScale = Utils.getApp().getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / fontScale + 0.5f);
}
sp转px
public static int sp2px(final float spValue) {
        final float fontScale = Utils.getApp().getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
}
指定dimens大小以及单位
public static float applyDimension(final float value, final int unit) {
        DisplayMetrics metrics = Utils.getApp().getResources().getDisplayMetrics();
        switch (unit) {
            case TypedValue.COMPLEX_UNIT_PX:
                return value;
            case TypedValue.COMPLEX_UNIT_DIP:
                return value * metrics.density;
            case TypedValue.COMPLEX_UNIT_SP:
                return value * metrics.scaledDensity;
            case TypedValue.COMPLEX_UNIT_PT:
                return value * metrics.xdpi * (1.0f / 72);
            case TypedValue.COMPLEX_UNIT_IN:
                return value * metrics.xdpi;
            case TypedValue.COMPLEX_UNIT_MM:
                return value * metrics.xdpi * (1.0f / 25.4f);
        }
        return 0;
}
获取view测量宽度
public static int getMeasuredWidth(final View view) {
        return measureView(view)[0];
}
获取view测量高度
public static int getMeasuredHeight(final View view) {
        return measureView(view)[1];
}
获取view的测量宽高
 public static int[] measureView(final View view) {
        ViewGroup.LayoutParams lp = view.getLayoutParams();
        if (lp == null) {
            lp = new ViewGroup.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT
            );
        }
        int widthSpec = ViewGroup.getChildMeasureSpec(0, 0, lp.width);
        int lpHeight = lp.height;
        int heightSpec;
        if (lpHeight > 0) {
            heightSpec = View.MeasureSpec.makeMeasureSpec(lpHeight, View.MeasureSpec.EXACTLY);
        } else {
            heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
        }
        view.measure(widthSpec, heightSpec);
        return new int[]{view.getMeasuredWidth(), view.getMeasuredHeight()};
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rockykou/article/details/79950370

在VB中实现PickList功能

在VB中实现PickList功能前言使用Delphi编程的人都知道,在Delphi中数据库控件DbGrid具有PickList功能,即编辑所在列时,只要用鼠标点击时,该列所在行便会出现组合框,列出所有...
  • coolstar
  • coolstar
  • 2001-06-05 11:53:00
  • 1018

Android开发中dp,sp和px之间的转换

众所周知,在Android开发中dp和px,sp和px之间的转换时必不可少的,下面将转换的代码记录下来...
  • student9128
  • student9128
  • 2016-12-29 21:56:05
  • 5991

android中px与sp,dp之间的转换

由于Android手机厂商很多,导致了不同设备屏幕大小和分辨率都不一样,然而我们开发者要保持在不同设备上显示同样的视觉效果,就需要做一些适配效果。 相关名词解释 屏幕大小:通常指的是屏幕对角线的长...
  • qidingquan
  • qidingquan
  • 2016-12-17 22:00:51
  • 6691

android中像素单位dp、px、pt、sp转换

android中像素单位有dp、px、pt、sp,每一种都代表不同的尺寸,先说一下每一种尺寸单位的含义。 dp(dip): device independent pixels(设备独立像素). 不同...
  • J772863893
  • J772863893
  • 2014-03-27 13:11:27
  • 2232

屏幕适配,px和dp, sp换算公式

换算公式: PPI =(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数 px = dp*ppi/160 dp = px / (ppi / 160) sp = px / (ppi / 16...
  • qq_25804863
  • qq_25804863
  • 2015-10-21 22:16:46
  • 6373

Android 单位px、dp、sp转换工具类

import android.content.Context; import android.util.TypedValue; //常用单位转换的辅助类 ...
  • p522947409
  • p522947409
  • 2016-07-21 09:27:15
  • 7021

Android开发之单位转换,dp、px、sp

Android开发之单位转换,dp、px、sp 在开放过程中,毕竟UI不是程序员画的,碰到专业技术好点的美工还好,碰到刚开始搞ui的,提供的图片尺寸,字体大小,切图尺寸各种让你无奈。在这里可以解...
  • z_x_Qiang
  • z_x_Qiang
  • 2017-06-23 14:24:59
  • 741

Android之px 与 dp, sp换算公式

PPI = Pixels per inch,每英寸上的像素数,即 "像素密度" xhdpi: 2.0hdpi: 1.5mdpi: 1.0 (baseline)ldpi: 0.75 drawable...
  • u011068702
  • u011068702
  • 2015-09-29 10:19:01
  • 3049

Android dp,px,sp之间的转换

Android 对于这个来说,是个小知识点,但对于有些情况还是很有必要的,毕竟这样也可以适配很多手机,虽然,后续随着AS的升级,百分比布局的出现,用到此功能的也许是在少数。先我们来看看它们之间的转换:...
  • JimTrency
  • JimTrency
  • 2016-09-28 13:03:42
  • 589

px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别 屏幕密度

px   :是屏幕的像素点 in    :英寸 mm :毫米 pt    :磅,1/72 英寸 dp   :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px di...
  • winson_jason
  • winson_jason
  • 2012-12-05 22:58:43
  • 8159
收藏助手
不良信息举报
您举报文章:Android开发之dp、sp、px转换-SizeUtils
举报原因:
原因补充:

(最多只允许输入30个字)