dp能适配吗???

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


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


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

代码布局s如下:


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

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

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

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:background="#666666"
            android:text="hahha"
             />
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:background="#999999"
            android:text="hahaha"
             />
    </LinearLayout>

</LinearLayout>



这种布局在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,所以屏幕达不到适配























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值