首页 技术 正文
技术 2022年11月13日
0 收藏 667 点赞 4,309 浏览 1595 个字

来源:http://blog.csdn.net/guolin_blog/article/details/50727753

最简单的办法是把dp理解成实际物理单位,和英寸、毫米等一样(1dp等于1/160英寸),好处是它和像素之间好换算,且结果是整数。

 float xdpi = getResources().getDisplayMetrics().xdpi;
float ydpi = getResources().getDisplayMetrics().ydpi;
其中xdpi代表屏幕宽度的dpi值,ydpi代表屏幕高度的dpi值,通常这两个值都是近乎相等或者极其接近的,在我的手机上这两个值都约等于403。那么403又代表着什么意思呢?我们直接参考下面这个表格就知道了:

dpi范围密度
0dpi ~ 120dpildpi
120dpi ~ 160dpimdpi
160dpi ~ 240dpihdpi
240dpi ~ 320dpixhdpi
320dpi ~ 480dpixxhdpi
480dpi ~ 640dpixxxhdpi

缩放公式:缩放后大小= 图片实际大小 × (手机密度/图片密度)
其中图片密度由图片所在drawable文件夹的后缀决定
比如一张100X100的图放在mdpi文件夹里,在hdpi的手机上,缩放后大小= 100 * (1.5/1) = 150
就成了一张150*150的图片。

就目前来讲,最佳放置图片资源的文件夹就是drawable-xxhdpi。那么有的朋友可能会问了,不是还有更高密度的drawable-xxxhdpi吗?干吗不放在这里?这是因为,市面上480dpi到640dpi的设备实在是太少了,如果针对这种级别的屏幕密度来设计图片,图片在不缩放的情况下本身就已经很大了,基本也起不到节省内存开支的作用了。

drawable文件夹的效果等同于drawable-mdpi文件夹。

    

* 在1080电视中layout-1920×1080布局526dp 340dp变成789px 510px 变大了1.5倍
* 在720电视中layout-1280×720布局526dp 340dp变成526px 340px 比例1:1

720px/10英寸=72dpi
1080px/10.8英寸=100dpi
100dp *(72/160) =45px
100dp *(100/160) =10000/160=62.5px
45px/72dpi=0.625英寸
62.5px/100dpi=0.625英寸

相同100dp的控件在不同分辨率(720和1080)且不同物理尺寸(10和10.8)的手机中,其100dp所代表的在手机中的物理长度都是0.625英寸。

当40寸和43寸电视,其屏幕分辨率都是1080*720的时候,40寸的总dp要小一点,像素密度dpi要大一点。

在程序运行时,系统根据屏幕的实际密度透明的处理任何需要缩放的设备独立像素单元,设备独立像素转换成屏幕实际像素的换算很简单:

px = dp * (dpi/ 160). 
对这个公式解释: 
例如:屏幕的物理尺寸为1.5英寸x2英寸,屏幕分辨率为240×320,则我们可以计算出在这部手机的屏幕上,每英寸包含的像素点的数量为240/1.5=160dpi(横向)或320/2=160dpi(纵向),Android API 说,如果屏幕密度为160,这时dp和px是一样的。1dp=1px; 例如 有一张定义为“100dp”的图片,在像素密度中(160dpi,也就是说240*320)手机上实际显示100px,如果你换成高(240dpi)上,那么就会显示 240/160 *100=150px
如果你把图片定义为 “100px”,在像素密度中(160dpi)显示是一样的,如果换高(240dpi),它每英寸放的像素的数量多,只用图片长度的一半就把一张图片放下了,看起来就短了一半,所以通常用dp

drawable微技巧以及layout的小知识

drawable微技巧以及layout的小知识

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289