px,dp,sp是Android中常用的距离单位。

基本概念:

屏幕尺寸:指的是屏幕对角线长度,用英寸(in)作为单位,1 in = 2.54 cm。

屏幕分辨率:在横纵向上的像素点数,单位px。一般以横向像素x纵向像素表示,如1080x1920像素。

dpi(dots per inch):屏幕像素密度,指每英寸点数,与屏幕尺寸和屏幕分辨率有关。

假设某屏幕分辨率为1080x1920,屏幕尺寸为5 in,则dpi=(√10802+19202) / 5 = 440, 即该屏幕dpi=440。因此同样尺寸的屏幕,分辨率越高,dpi越高。分辨率相同的屏幕,尺寸越小,dpi越高。

ppi(pixels per inch):屏幕像素密度,指每英寸像素,计算方式同dpi。

px (pixel):每个px对应屏幕的一个点,1px=1个像素点。

dip/dp(device independent pixels):一种基于屏幕密度的抽象单位,密度无关像素,在不同的像素密度的设备上会自动适配。

sp(scaled pixels):比例像素。同dp,可以根据用户的字体大小来缩放。

dpi&ppi

dpi和ppi的区别从技术角度来说,dpi(dot)面向的是印刷领域,而ppi(pixel)面向的是计算机领域。

描述手机屏幕属性使用ppi,在android开发中drawable文件对应的是dpi,实际上ppi和dpi的值是一样的,只是描述不同。

px&dp

在每英寸160点(即160dpi)的显示器上,1dp=1px。

在320*480分辨率,像素密度为160时,1dp=1px。

在480*800分辨率,像素密度为240时,1dp=1.5px。

计算公式:px=dp x(dpi/160)

各种dpi

ldpi:适用于低密度(ldpi)屏幕(0-120dpi)的资源,1dp=3/4px。

mdpi:适用于中密度(mdpi)屏幕(120-160dpi)的资源,1dp=1px。

hdpi:适用于高密度(hdpi)屏幕(160-240dpi)的资源,1dp=1.5px。

xhdpi:适用于超高密度(xhdpi)屏幕(240-320dpi)的资源,1dp=2px。

xxhdpi:适用于超超高密度(xxhdpi)屏幕(320-480dpi)的资源,1dp=3px。

xxxhdpi:适用于超超超高密度(xxxhdpi)屏幕(480-640dpi)的资源,1dp=4px。

drawable/mipmap各种文件夹对应图片大小

drawable-ldpi:36*36

drawable-mdpi:48*48

drawable-hdpi:72*72

drawable-xhdpi:96*96

drawable-xxhdpi:144*144

drawable-xxxhdpi:192*192

dp,sp,px相互转化代码

/**

* dp转换为px

*

* @param context

* @param value 单位dp

* @return

*/

public static int dp2px(Context context, int value) {

float v = context.getResources().getDisplayMetrics().density;

return (int) (v * value + 0.5f);

}

/**

* sp转换为px

*

* @param context

* @param value 单位sp

* @return

*/

public static int sp2px(Context context, int value) {

float v = context.getResources().getDisplayMetrics().scaledDensity;

return (int) (v * value + 0.5f);

}

/**

* px转换为dp

*

* @param context

* @param value

* @return

*/

public static int px2dp(Context context, int value) {

float v = context.getResources().getDisplayMetrics().density;

return (int) (value / v + 0.5f);

}

/**

* px转换为sp

*

* @param context

* @param value

* @return

*/

public static int px2sp(Context context, int value) {

float v = context.getResources().getDisplayMetrics().scaledDensity;

return (int) (value / v + 0.5f);

}

android 字体px转sp,Android中px,dp,sp区别及换算相关推荐

  1. android 字体像素转换工具类_android px,dp,sp大小转换工具

    package com.voole.playerlib.util; import android.content.Context; /** * Android大小单位转换工具类 * * float s ...

  2. android 字体选中加粗,Android——TabLayout设置选中字体变大,加粗,透明度

    TabLayout自带没有设置选中时字体大小的属性,网上搜了好多基本都不生效,搞了一上午终于好使了,记个笔记记录下,布局要自己定义下,要不不好使. 布局中使用TabLayout的xml文件 andro ...

  3. android 字体点击变色,Android TextView 中实现部分文字变色以及点击事件

    首先要想实现文字变色以及点击,都需要使用到SpannableStringBuilder,实例化该类也很简单,只需将你想要处理的字符串当做参数 SpannableStringBuilder spanna ...

  4. android 字体选中加粗,Android TabLayout选中字体加粗

    解决办法是为TabLayout 添加一个监听,并在监听中自定义选中项UI,代码和布局文件如下 tablayoutTablayout.addOnTabSelectedListener(new TabLa ...

  5. android 字体加下划线,android自定义带下划线EditText解决文字压线的问题

    最近做项目,需要用到带下划线的EditText,通过学习Android提供的示例Notepad,对其进行小小的改动,解决文字压线的问题,但是光标压线的问题没有解决,希望以后能够解决,效果和代码如下: ...

  6. android 字体滚动效果,2018-02-05 android 左右字滚动效果(跑马灯效果),能直接拿来用的...

    MarqueeView 俗名:可垂直跑.可水平跑的跑马灯 学名:可垂直翻.可水平翻的翻页公告 com.sunfusheng marqueeview 1.3.3 pom compile 'com.sun ...

  7. android 字体像素转换工具类_Android中px与dip,sp与dip等的转换工具类

    Android中px与dip,sp与dip等的转换工具类 功能 通常在代码中设置组件或文字大小只能用px,通过这个工具类我们可以把dip(dp)或sp为单位的值转换为以px为单位的值而保证大小不变.方 ...

  8. android中的长度单位介绍(dp,sp,px,in,pt,mm)

    作为小白学习了一段时间的android,在学习过程中却一直有个疑问,在设置控件大小时面对这几个单位却不知如何选择,查找相关资料后了解了其含义,今天来分享下 dp或dip(device independ ...

  9. android设备的屏幕单位中的px(像素)、dp与sp的区别以及换算

    1.px 即像素,1px代表屏幕上的一个物理像素点. "pixel" 的缩写,像素.是画面显示的基本单位,真实的像素并不是点或者方块(虽然有时这样显示),也没有实际固定长度,只是一 ...

最新文章

  1. leetcode算法题--二叉树中的列表★
  2. getopt();getopt_long();getopt_long_only();option
  3. A Scala Tutorial for Java programmers之(一)Scala入门:Scala例子,以及如何与Java交互
  4. mysql 5.5 分区_MySQL 5.5 表分区功能增强
  5. UITableView自定义Section
  6. Windows Mobile 获取来电号码和屏蔽来电
  7. Oracle 开放源代码项目
  8. 【数据库】Hive SQL 正则表达式进阶二(regexp_extract函数进阶使用)
  9. 中南大学毕业设计(论文)LaTeX模板
  10. dsp2812软件周期耗时测试,基于DSP2812设计的简易数字频率计
  11. PDF内容太多分不清?这个PDF加页码的方法可以帮助你
  12. ONVIF PTZ控制
  13. Android开发规范,flutter生成二维码
  14. Unity Gate Fit
  15. 蓝牙降噪耳机哪个比较好?四大热门降噪蓝牙耳机推荐
  16. JMeter学习(五)---察看结果树和聚合报告指标项详解
  17. 台达canopen building_台达可编程控制器DVP-ES2/EX2/ES2-C系列介绍
  18. c#OpenCVSharp+Zxing识别条形码
  19. PHP解决网页乱码问题
  20. java计算机毕业设计汽车售后服务管理系统源码+程序+lw文档+mysql数据库

热门文章

  1. 目标检测——初始学习率设置的学习笔记
  2. leetcode944. Delete Columns to Make Sorted
  3. 【半年总结】---凤凰涅槃,历久弥新
  4. 从持续交付看敏捷开发的自相似性(敏捷开发的心跳)
  5. 【编程珠玑】第六章 程序性能分析
  6. 敏捷开发一千零一问系列之十二:敏捷实施的步骤?
  7. 实训41 2018.6.2
  8. C#用SqlCilent模式连接数据库实例
  9. 如何不用更改底层来实现Dao多样化
  10. Xcode引入了第三方的类库之后真机调试提示莫名其妙的错误