今天一个同事搞Android的同事居然说dp就能解决屏幕适配的问题,无奈!


dp是谷歌官方推荐的使用单位,在一定程度上是能解决屏幕适配问题,但是据OSM统计,2015年Android手机屏幕有2900多种,屏幕适配是Android不可避免的事情!


先写一个实例,来看一下dp的适配效果;

代码布局s如下:


    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

            android:layout_width="160dp"
        android:layout_height="wrap_content"
        android:background="#333333"
        android:text="hahh" />

            android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

                    android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:background="#666666"
            android:text="hahha"
             />
                    android:layout_width="0dp"
            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,所以屏幕达不到适配























更多相关文章

  1. Android屏幕的刷新机制
  2. Android应用系列:仿MIUI的Toast动画效果实现(有图有源码)
  3. 【android】适配多屏幕的最佳实践
  4. Android Scroll分析 (一) 滑动效果是如何产生的
  5. Android 手机屏幕那些事儿
  6. Android,关于设备独立像素(dip/dp),关于机型屏幕适配

随机推荐

  1. 想在Android上用一下PureMVC,谁知结果……
  2. Android(安卓)studio 使用问题汇总
  3. phonegap WebApp
  4. Android之屏幕方向改变以及onConfigurati
  5. Flash移动开发高级教程——创建Anroid &
  6. xamarin开发android收集的一些工具
  7. Android(安卓)webView 中loadData方法加
  8. Android中如何获取系统中所有的应用程序
  9. Android(安卓)INSTALL_FAILED_ACWF_INCOM
  10. OpenGL播放yuv数据流(着色器SHADER)-andr