android px dip sp等的理解

来源:互联网 发布:推荐一本编程的书籍 编辑:程序博客网 时间:2024/06/07 10:25

(1)density(密度)= densityDpi /160;
(2) densityDpi :每英寸多少个点,我的理解是每英寸多少个dip;
(3)dip或dp(与密度无关的像素)。这个和设备硬件有关,为了支持 WVGA、HVGA和QVGA 5进制空间推荐使用这个。一种基于屏幕密度的抽象单位。设置一些view的宽高可以用这个,一般情况下,在不同分辨率,都不会有缩放的感觉。如果用px的话,320px占满HVGA的宽度,到WVGA上就只能占一半不到的屏幕了,那一定不是你想要的;
dip可以看做是屏幕的物理尺寸,实际上不是;
(4)px (pixels)(像素):屏幕上的点 ,与密度相关。密度大了,单位面积上的px会比较多;
(5)sp(与刻度无关的像素)放大像素– 主要处理字体的大小;

DisplayMetrics metrice= new DisplayMetrics();
Display defaultDisplay = getWindowManager().getDefaultDisplay();
defaultDisplay.getMetrics(metrice);
// 由硬件设备决定该值大小
int densityDpi = metrice.densityDpi;
float density = metrice.density;
// 屏幕的分辨率
int heightPixels = metrice.heightPixels;
int widthPixels = metrice.widthPixels;
float xdpi = metrice.xdpi;
float ydpi = metrice.ydpi;
float scaledDensity = metrice.scaledDensity;

系统会根据机器的分辨率(分辨率与densityDpi相关)来分别到这几个文件夹里面去找对应的图片:
drawable-hdpi 高密度,通常是指240也就是上述代码中的densityDpi为240
drawable-ldpi 底密度,通常是指120
drawable-mdpi 中等密度,通常是指160
drawable-xhdpi 超高密度,通常是指320

分辨率的概念
现在人们经常把320*240成为 分辨率,其实是不准确的,这仅仅是图片的像素点总数罢了,分辨率的概念是每英寸上的像素点数,单位为dpi.在windows下右键属性–摘要–高级里可以查看,一般图片的dpi为96DPI。这个单位根ps下的有出入,但都是一回事。详情参见:http://www.baidu.com/link?url=P0mQdUmSUuV4qhvTgLDMJ8oHui5avC6VPvsaKU4THJIkbB37cpeylwHbZ3Xi3x4r9jUkAhmGKTudZ8hcG6HoyGhJRw2t0M-Oaem78YKmoKy

0 0
原创粉丝点击