android 屏幕适配之dp
来源:互联网 发布:淘宝宝贝描述低 编辑:程序博客网 时间:2024/04/28 15:53
参考自: android屏幕适配最权威指南
地址:http://blog.csdn.net/skykingf/article/details/45536143
概念
ppi (pixels per inch):图像的采样率(在图像中,每英寸所包含的像素数目)
dpi (dots per inch):打印分辨率 (每英寸所能打印的点数,即打印精度)
android手机上dpi代表了屏幕的像素密度;
屏幕的尺寸:屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米
android手机适配原因:
android手机大小不一样,屏幕的分辨率不一样,导致同样的像素数在不同的手机上显示的大小不一样;
因此发明了dp(dip)这个单位,他是Density Independent Pixels的缩写,即密度无关像素;
规定160dpi(每一英寸160像素)的屏幕: 1dp = 1px; 举个例子:320dpi的 屏幕,1dp = 320/160 px即为 1dp = 2px
因此同样的1dp在两个不同密度屏幕上的大小显示一致;
问题就是:无法通过dp控制按钮等控件在屏幕中所占比例大小;
mdpi、hdpi、xdpi、xxdpi
其实之前还有个ldpi,但是随着移动设备配置的不断升级,这个像素密度的设备已经很罕见了,所在现在适配时不需考虑。
mdpi、hdpi、xdpi、xxdpi用来修饰Android中的drawable文件夹及values文件夹,用来区分不同像素密度下的图片和dimen值。
那么如何区分呢?Google官方指定按照下列标准进行区分:
在进行开发的时候,我们需要把合适大小的图片放在合适的文件夹里面。下面以图标设计为例进行介绍。
图标的适配方式:
在设计图标时,对于五种主流的像素密度(MDPI、HDPI、XHDPI、XXHDPI 和 XXXHDPI)应按照 2:3:4:6:8 的比例进行缩放。例如,一个启动图标的尺寸为48x48 dp,这表示在 MDPI 的屏幕上其实际尺寸应为 48x48 px,在 HDPI 的屏幕上其实际大小是 MDPI 的 1.5 倍 (72x72 px),在 XDPI 的屏幕上其实际大小是 MDPI 的 2 倍 (96x96 px),依此类推。
代码中获取屏幕像素和屏幕密度的方法:
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度因子(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
density的含义就是 1dp 代表的像素数,即: xxdpi / 160dpi的结果;
因此要通过dp 得到 像素数公式: px = xx dp * (xx dpi/ 160dpi) ;
- android 屏幕适配之dp
- 屏幕适配之dp转px?
- Android屏幕适配关于dp
- Android 屏幕适配dp,sp
- android开发之dip、dp、sp、pt和px的区别以及屏幕密度略谈(外加屏幕适配)
- 快速开发12之屏幕适配—android dp和px之间转换
- Android之px/dpi/dip/dp/density/DisplayMetrics和屏幕适配
- android 之屏幕适配
- Android之屏幕适配
- Android 之屏幕适配
- Android之屏幕适配
- Android之屏幕适配
- android之屏幕适配
- Android之屏幕适配
- Android之屏幕适配
- Android屏幕适配 dp px 之间转换
- Android屏幕适配dp、px两套解决办法
- Android 屏幕适配(dp和px转换)
- 关于AI的目标导向型行动计划
- ORACLE中的pfile和spfile
- URI和URL的区别
- log4j.properties配置详解
- ComboPooledDataSource数据库死锁
- android 屏幕适配之dp
- Android触摸屏事件派发机制详解与源码分析
- 算法导论值快速排序
- Openfire 自定义Servlet插件访问Url登录拦截问题(源码方式)
- CodeSign error: no provisioning profile at path '/Users/user/Library/MobileDevice/Provisioning Profi
- 格式化数字
- JAVA字符串格式化-String.format()的使用
- blog
- 使用jquery获取同组单选框中被选中项的value或给同组单选框赋值