位置: 编程技术 - 正文

教你来彻底理解ldpi、mdpi、hdpi、xhdpi、xxhdpi(如何深度理解)

编辑:rootadmin
1 首先你得知道

推荐整理分享教你来彻底理解ldpi、mdpi、hdpi、xhdpi、xxhdpi(如何深度理解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:怎样才叫理解,怎么学会理解,怎么才叫理解,怎样才叫理解,怎么学会理解,怎么学会理解,怎么样去理解,怎样才叫理解,内容如对您有帮助,希望把文章链接给更多的朋友!

相信很多人都不是很理解ldpi、mdpi、hdpi、xhdpi、xxhdpi里面到底是根据什么来进行划分的,其实我一直以为是根据分辨率来区分,其实这四个文件夹和具体的屏幕分辨率是没直接关系的,上面说的做法也有一定道理,因为大部分的*的手机都是高密度手机,*都是超高密度手机,但是这四个文件夹之和屏幕密度有关,和具体分辨率无关。

1 Android手机目前常见的分辨率

1.1 手机常见分辨率:

4:3VGA * (Video Graphics Array)QVGA * (Quarter VGA)HVGA * (Half-size VGA)SVGA * (Super VGA)

5:3WVGA * (Wide VGA)

:9FWVGA * (Full Wide VGA)HD * High DefinitionQHD *p * 标清p * 高清

手机:iphone 4/4s * (3:2)iphone5 *小米1 *(FWVGA)小米2 *

1.2 分辨率对应DPI"HVGA mdpi"

"WVGA hdpi ""FWVGA hdpi ""QHD hdpi ""P xhdpi""P xxhdpi "

下面给出一个最最关键的等式:low:medium:high:extra-high:extra-extra-high=3:4:6:8: OK,就是说五个文件夹的比例为3:4:6:8:。具体是怎么回事呢?下面分析一下:比如我用一个*的4寸手机,这个手机的屏幕密度按照Google的说法,就属于密度为high level的水平(通过分辨率和屏幕尺寸计算密度,然后google自己有一套标准说你位于哪个范围属于哪个level的密度水平),然后这个手机的应用在用图片的时候,就会去hdpi下去找,并且以这个文件夹的图片为标准,也就是说比如我的应用去取一张aa.png的图片,这个图片的原图尺寸为*,恰好hdpi下有一张,那这张图片显示到屏幕上以后,它的显示尺寸长宽都为px。那问题来了,但如果我的hdpi下没有这张图片,而只在xhdpi下有这张图片,图片的原图尺寸是*,那请问显示到屏幕上的图片的尺寸会是多大呢,还是长宽都为px吗? 答案是否定的,而且现在就用到了上面那个比例,high:extra-high=6:8。先明确这样一个问题,如果我的屏幕是hdpi的,结果我的图片是放到了xhdpi下,那系统会把这张图片进行缩小显示,也就是说我的xhdpi下放了一张*的图片,那显示当hdpi屏幕上肯定要比*小,这样才能保证说大小屏幕界面显示效果是一致的,因为密度小的手机显示一张图片要比密度大的手机显示同一张图片的面积要大,要想显示面积一样就必须要把图片搞小点。接上面的问题,假设显示在我的hdpi屏幕上的图片的宽度为x,那满足以下等式:6:8=x: 。 可得到x=.3,向后取整数得 。

2 屏幕适配的注意事项2.1 基本设置

2.1.1 AndroidManifest.xml设置

在中Menifest中添加子元素

android:anyDensity="true"时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源。

相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源:

1) 如果drawable-hdpi、drawable-mdpi、drawable-ldpi三个文件夹中有同一张图片资源的不同密度表示,那么系统会去加载drawable_mdpi文件夹中的资源;

2) 如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源,其他同理;

3) 如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有,系统会加载drawable-mdpi中的资源,其他同理,使用最接近的密度级别。

2.1.2 横屏竖屏目录区分

1) drawable

教你来彻底理解ldpi、mdpi、hdpi、xhdpi、xxhdpi(如何深度理解)

a) drawable-hdpi该图片即适用于横屏,也适用于竖屏;

b) drawable-land-hdpi,当屏幕为横屏,且为高密度时,加载此文件夹的资源;

c) drawable-port-hdpi,当屏幕为竖屏,且为高密度时,加载此文件夹中的资源。其他同理。

2) layout

在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。

2.2 多屏幕适配的4条黄金原则

1) 在layout文件中设置控件尺寸时应采用fill_parent、wrap_content、match_parent和dp;

具体来说,设置view的属性android:layout_width和android:layout_height的&#;时,wrap_content,match_parent或dp比px更好,文字大小应该使用sp来定义。

2) 在程序的代码中不要出现具体的像素&#;,在dimens.xml中定义;

为了使代码简单,android内部使用pix为单位表示控件的尺寸,但这是基于当前屏幕基础上的。为了适应多种屏幕,android建议开发者不要使用具体的像素来表示控件尺寸。

3) 不使用AbsoluteLayout(android1.5已废弃) ,可以使用RelativeLayout替代;

4) 对不同的屏幕提供合适大小的图片。

不同大小屏幕用不同大小的图片,low:medium:high:extra-high图片大小的比例为3:4:6:8;举例来说,对于中等密度(medium)的屏幕你的图片像素大小为×,那么低密度(low)屏幕的图片大小应为×,高(high)的为×,extra-high为×。

2.3 使用9-patch PNG图片

使用图片资源时,如果出现拉伸,因为图片处理的原因,会变形,导致界面走形。9-patch PNG图片也是一种标准的PGN图片,在原生PNG图片四周空出一个像素间隔,用来标识PNG图片中哪些部分可以拉伸、哪些不可以拉伸、背景上的边框位置等。

“上、左”定义可拉伸区域

“右、下”定义显示区域,如果用到完整填充的背景图,建议不要通过android:padding来设置边距,而是通过9-patch方式来定义。

Android SDK中提供了编辑9-Patch图片的工具,在tools目录下draw9patch.bat,能够立刻看到编辑后的拉伸效果,也可以直接用其他图片编辑工具编辑,但是看不到效果。

2.4 不同的layout

Android手机屏幕大小不一,有x, x, x……

怎样才能让Application自动适应不同的屏幕呢?

其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-x、layout-x……所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。

2.5 测试验证

一般使用AVD Manager创建多个不同大小的模拟器,如果条件具备,也可以直接用真机测试。

OK,这就是对这五个文件夹的彻底理解~ 谢谢~

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 官方百分比适配库 AndroidPercentSupportLib概述由于Android机型种类众多,屏幕的碎片化也非常的严重。这对于UI布局的适配来说也是非常麻烦的一个事情。一种做法是:以不同

谈谈Android 程序框架设计 做第一个项目的时候,自己组织结构和设计,最后效果实现了,但是发现自己写的代码和架构真的是太乱了,所以我觉得要有一个规划的目标,让自己

Android通过HttpURLConnection获取JSON并进行UI更新 本例子中使用的是:HttpURLConnectionThreadHandler的组合,在newThread中通过HttpURLConnection获取JSON数据后并在Handler里对UI界面进行更新。也可以用过HttpClient,Asyn

标签: 如何深度理解

本文链接地址:https://www.jiuchutong.com/biancheng/368569.html 转载请保留说明!

上一篇:Fragment的懒加载(解决ViewPager中Fragment生命周期错乱的问题)(fragment懒加载原理)

下一篇:Android 官方百分比适配库(安卓百分百)

  • 个体工商户定期定额征收个人所得税
  • 广播影视服务税率2023
  • 计提房产税会计分录怎么做
  • 简易征收的进项税可以抵扣吗
  • 工程结算是含税还是不含税
  • 电子发票怎么入库
  • 自然人税收管理系统扣缴客户端
  • 甲是乙公司依法设立的分公司
  • 增值税专票丢了能补开吗
  • 什么情况下视同销售
  • 税盘锁了还能报税吗
  • 残保金2018
  • 通过网络手段获取用户行为的方法
  • 购置房屋
  • 员工工资薪金会计如何核算?
  • 企业间贴现手续怎么办理
  • 应收账款贷方余额表示什么
  • 生产药酒的厂家
  • 计提成本会计分录怎么做
  • 收入成本以前年度损益调整账务处理是怎样的?
  • 印花税的滞纳金怎么计算
  • 对于甲供工程,施工方销售额不包括建设方提供的材料款。那么该销售额是否包括设备及动力款?
  • 税局代增值税专用发票 需要带什么
  • 公司注销未缴纳社会保险费
  • 债券折价摊销属于借款费用吗
  • 母公司代付子公司费用的委托书
  • 实验耗材发票内容怎么写
  • 初级备考心得总结
  • 未开票收入是含税收入吗
  • 冲费用挂账怎么做账
  • 跨月退款会计分录
  • 同一控股下的控股合并
  • php是面向过程还是面向对象
  • 辅助生产成本包含哪些
  • 显示器有必要买240hz吗
  • 固定资产更新改造的账务处理
  • 计提坏账准备的方法有哪些
  • 热带雨林瀑布群雪野
  • php rsa
  • php引用文件的方法
  • php读取php文件内容
  • 什么是加计扣除政策
  • 银行对账单附在记账凭证中吗
  • vue实例完整项目源码
  • 前端资源浏览器下载
  • js中move
  • php中定义函数
  • 结转成本费用的会计分录是什么?
  • 固定资产一次性折旧账务处理
  • 衍生工具什么意思
  • 公司内部食堂招待费账务处理
  • 企业薪资制度
  • 小规模收入不超过多少不用交税
  • sql server建表时怎样选择数据类型
  • Windows Server 2008如何设置自动获取ip?设置自动获取ip教程
  • win8安全中心在哪
  • win10玩魔兽争霸卡顿
  • fedora怎么联网
  • Win10中文输入法不能用
  • ssd安装centos7
  • 略施小计的近义词
  • win10计算机管理器
  • SIMETER.EXE - SIMETER是什么进程 有什么用
  • windows7准备配置windows
  • window7iis配置步骤
  • window10提示更新总是
  • [置顶]公主大人接下来是拷问时间31
  • unity锚点
  • 深入分析南水北调工程面临的新形势心得体会
  • 批处理bat
  • python文本处理教程
  • jquery遍历数组的方法
  • unityugui
  • window10脚本错误
  • javascript面向对象编程指南
  • 办公室租金可以开专票抵扣进项税吗
  • 公租房要钱吗
  • 棚户区改造的房子和商品房有什么区别
  • 总公司与分公司签订承包协议
  • 综述与系统综述
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设