热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Androidvalues-sw400dp屏幕适配

最近在开发中遇到屏幕适配的问题:都是使用dp为单位,出来的效果却不一样。对比手机:两个手机屏幕尺寸相同,都是5.7英寸,同样画100dp的线,在屏幕上的长度却不一样,Note5上显示

最近在开发中遇到屏幕适配的问题:都是使用dp为单位,出来的效果却不一样。
对比手机:
屏幕对比
两个手机屏幕尺寸相同,都是5.7英寸,同样画100dp的线,在屏幕上的长度却不一样,Note5上显示的要短一些。

原因为两个手机最小宽度(以dp为单位)不同。

怎样计算

安卓根据手机ppi设置dpi,分为 120(ldpi)、160(mdpi)、213、240(hdpi)、280、320(xhdpi)、360、400、420、480(xxhdpi)、560、640(xxxhdpi);
根据DisplayMetrics可以获取到手机dpi,Note5比较特殊为560(ppi为515),A8为480(ppi为386)。
所以

Note5 dp=160*1440/560=411

A8 dp=160*1080/480=360

怎样解决

安卓会自动根据手机的大小(按宽度算 dp为单位)去选择values或者values-swxxxdp。
sw为small width,后面接的值表示,屏幕的最小宽度dp大于这个值的时候启用。
所以写了两个dimens.xml分别放在
res/values/dimens.xml
res/values-sw400dp/dimens.xml
Note5会找values-sw400dp/dimens.xml,A8会找默认的values/dimens.xml;

默认的总宽度为360dp,放在values/dimens.xml文件中:

<resources>
    <dimen name="DIMEN_1dp">1dpdimen>
    <dimen name="DIMEN_2dp">2dpdimen>
    <dimen name="DIMEN_3dp">3dpdimen>
    <dimen name="DIMEN_5dp">5dpdimen>
    <dimen name="DIMEN_6dp">6dpdimen>
    <dimen name="DIMEN_7dp">7dpdimen>
    <dimen name="DIMEN_8dp">8dpdimen>
    <dimen name="DIMEN_10dp">10dpdimen>
    <dimen name="DIMEN_11dp">11dpdimen>
    <dimen name="DIMEN_12dp">12dpdimen>
    <dimen name="DIMEN_13dp">13dpdimen>
    <dimen name="DIMEN_14dp">14dpdimen>
    <dimen name="DIMEN_15dp">15dpdimen>
    <dimen name="DIMEN_16dp">16dpdimen>
    <dimen name="DIMEN_18dp">18dpdimen>
    <dimen name="DIMEN_20dp">20dpdimen>
    <dimen name="DIMEN_22dp">22dpdimen>
    <dimen name="DIMEN_24dp">24dpdimen>
    <dimen name="DIMEN_26dp">26dpdimen>
    <dimen name="DIMEN_30dp">30dpdimen>
    <dimen name="DIMEN_32dp">32dpdimen>
    <dimen name="DIMEN_36dp">36dpdimen>
    <dimen name="DIMEN_40dp">40dpdimen>
    <dimen name="DIMEN_42dp">42dpdimen>
    <dimen name="DIMEN_45dp">45dpdimen>
    <dimen name="DIMEN_46dp">46dpdimen>
    <dimen name="DIMEN_50dp">50dpdimen>
    <dimen name="DIMEN_52dp">52dpdimen>
    <dimen name="DIMEN_60dp">60dpdimen>
    <dimen name="DIMEN_65dp">65dpdimen>
    <dimen name="DIMEN_70dp">70dpdimen>
    <dimen name="DIMEN_80dp">80dpdimen>
    <dimen name="DIMEN_90dp">90dpdimen>
    <dimen name="DIMEN_100dp">100dpdimen>
    <dimen name="DIMEN_120dp">120dpdimen>
    <dimen name="DIMEN_130dp">130dpdimen>
    <dimen name="DIMEN_150dp">150dpdimen>
    <dimen name="DIMEN_190dp">190dpdimen>
    <dimen name="DIMEN_200dp">200dpdimen>
    <dimen name="DIMEN_240dp">240dpdimen>
    <dimen name="DIMEN_250dp">250dpdimen>
    <dimen name="DIMEN_255dp">255dpdimen>
    <dimen name="DIMEN_300dp">300dpdimen>
resources>

411dp的宽度呢?由于411和360是1.14倍的关系,所以 DIMEN_1dp = 1.14dp

<resources>
    
    <dimen name="DIMEN_1dp">1.2dpdimen>
    <dimen name="DIMEN_2dp">2.4dpdimen>
    <dimen name="DIMEN_3dp">4.8dpdimen>
    <dimen name="DIMEN_5dp">6dpdimen>
    <dimen name="DIMEN_6dp">7.2dpdimen>
    <dimen name="DIMEN_7dp">8.4dpdimen>
    <dimen name="DIMEN_8dp">9.6dpdimen>
    <dimen name="DIMEN_10dp">12dpdimen>
    <dimen name="DIMEN_11dp">13.2dpdimen>
    <dimen name="DIMEN_12dp">14.4dpdimen>
    <dimen name="DIMEN_13dp">15.6dpdimen>
    <dimen name="DIMEN_14dp">16.8dpdimen>
    <dimen name="DIMEN_15dp">18dpdimen>
    <dimen name="DIMEN_16dp">19.2dpdimen>
    <dimen name="DIMEN_18dp">21.6dpdimen>
    <dimen name="DIMEN_20dp">24dpdimen>
    <dimen name="DIMEN_22dp">26.4dpdimen>
    <dimen name="DIMEN_24dp">28.8dpdimen>
    <dimen name="DIMEN_26dp">31.2dpdimen>
    <dimen name="DIMEN_30dp">36dpdimen>
    <dimen name="DIMEN_32dp">38.4dpdimen>
    <dimen name="DIMEN_36dp">43.2dpdimen>
    <dimen name="DIMEN_40dp">48dpdimen>
    <dimen name="DIMEN_42dp">50.4dpdimen>
    <dimen name="DIMEN_45dp">54dpdimen>
    <dimen name="DIMEN_46dp">55.2dpdimen>
    <dimen name="DIMEN_50dp">60dpdimen>
    <dimen name="DIMEN_52dp">62.4dpdimen>
    <dimen name="DIMEN_60dp">72dpdimen>
    <dimen name="DIMEN_65dp">78dpdimen>
    <dimen name="DIMEN_70dp">84dpdimen>
    <dimen name="DIMEN_80dp">96dpdimen>
    <dimen name="DIMEN_90dp">108dpdimen>
    <dimen name="DIMEN_100dp">120dpdimen>
    <dimen name="DIMEN_120dp">144dpdimen>
    <dimen name="DIMEN_130dp">156dpdimen>
    <dimen name="DIMEN_150dp">180dpdimen>
    <dimen name="DIMEN_190dp">228dpdimen>
    <dimen name="DIMEN_200dp">240dpdimen>
    <dimen name="DIMEN_240dp">288dpdimen>
    <dimen name="DIMEN_250dp">300dpdimen>
    <dimen name="DIMEN_255dp">306dpdimen>
    <dimen name="DIMEN_300dp">360dpdimen>
resources>

推荐阅读
author-avatar
单身男人adgjm
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有