dp能适配吗???
今天一个同事搞Android的同事居然说dp就能解决屏幕适配的问题,无奈!
dp是谷歌官方推荐的使用单位,在一定程度上是能解决屏幕适配问题,但是据OSM统计,2015年Android手机屏幕有2900多种,屏幕适配是Android不可避免的事情!
先写一个实例,来看一下dp的适配效果;
代码布局s如下:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
android:layout_height="wrap_content"
android:background="#333333"
android:text="hahh" />
android:layout_height="wrap_content"
android:orientation="horizontal" >
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#666666"
android:text="hahha"
/>
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#999999"
android:text="hahaha"
/>
这种布局在320*240,480*320,800*480均能达到把屏幕宽度等分的效果,这就能说明屏幕适配吗?:
但是再往下测,那就肯定不是了!
怎么算???
不同的手机谷歌有不同的算法,dp和px在不同手机上有不同的计算规则,很多朋友已经介绍的很清楚了
比如800*480的分辨率,一般就是4寸(斜对角线)
此时的像素密度: sqrt(800*800+480*480)/4 = 233dpi
谷歌中有文档来详细说明这个对应的关系
233和谷歌官方规定的240dpi接近,对应的是hdpi 1dp = 1.5px
160dp = 240px ,240刚好是480的一半,达到了平分屏幕的效果
1280*720 一般就5寸
此时的像素密度: sqrt(1280*1280+720*720)/5 = 293dpi
293dpi接近于320dpi ,对应xhdpi 1dp = 2px
在代码中标记dp在不同的手机上就会有对应的不同的像素,这就在一定程度上达到了屏幕适配
160dp = 320px
320px/720 不等于0.5,所以屏幕达不到适配
更多相关文章
- Android屏幕的刷新机制
- Android应用系列:仿MIUI的Toast动画效果实现(有图有源码)
- 【android】适配多屏幕的最佳实践
- Android Scroll分析 (一) 滑动效果是如何产生的
- Android 手机屏幕那些事儿
- Android,关于设备独立像素(dip/dp),关于机型屏幕适配