位置: 编程技术 - 正文

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

发布时间:2024-02-27
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 官方百分比适配库(安卓百分百)

  • 做账报税简单吗
  • 盘盈的固定资产怎么做账务处理
  • 发票只能全部冲开吗
  • 个税申报系统跟工资表累计扣除数不一致怎么办
  • 个体工商户开普票流程
  • 增值税预缴税金交错了怎么办
  • 工会差旅费如何做账
  • 现金折扣是否可抵税
  • 普通发票做账有什么用
  • 公司改变工资结构变相降工资怎么办
  • 总账中余额为负怎么写
  • 利润表中的上期金额怎么填?
  • 进项票异常如何自查
  • 办理银行承兑汇票贴现的会计分录
  • 设备器具一次性扣除会计分录
  • win10windows资源管理器怎么打开
  • macbook截图快捷键没反应
  • 营业外支出的核算内容包括
  • 这张磁盘有写保护无法格式化
  • 私立医院执行什么会计准则
  • php中??
  • 个税扣除项怎么扣除
  • 外购货物应抵扣的进项税额
  • 表单的基本语法格式
  • php关键字的意思
  • 窗函数的作用
  • php img
  • 哪些货物出口不需要运输条件
  • 小企业会计科目表
  • 劳务费发票和建筑劳务费发票
  • 财务费用为负数是好事还是坏事
  • 房产契税滞纳金如何减免
  • 工商银行电子回执单怎么查看
  • 行政单位基建账户可以建立吗为什么
  • 土地测绘费计入管理费用明细科目吗
  • 企业出口证明
  • mongodb replica set 添加删除节点的2种方法
  • 工资薪金个人所得税在哪里申报
  • 水运企业会计核算办法
  • sql server 2008 2014
  • 个体工商户生产经营税
  • 电脑入账如何做凭证
  • 小规模纳税人补开发票如何申报
  • 不确认销售收入的原因
  • 分公司交纳的管理费用
  • 股东借款如何认定为出资
  • 小规模纳税人购买税控设备
  • 企业年金个税怎么计算
  • 城镇土地使用税的计税依据
  • 航天金税服务费发票在哪打印
  • 会计岗位职责风险点及防控措施
  • 填写记账凭证内容摘要的三个要素
  • sql server m1
  • Windows Server 2008的节能降耗
  • Linux系统中uniq命令的基本使用教程
  • gwservice进程
  • linux crontab -e
  • windowsxp如何隐藏文件
  • ubuntu限制cpu个数
  • linux系统基于
  • winxp开机黑屏只有光标
  • 离线安装macos
  • w10系统如何
  • win8控制面板怎么打开
  • javascript总结
  • 适配器模型
  • javascript运用
  • 自动化软件安装工具
  • shell 批量执行命令
  • node一次执行多个文件
  • IE下href 的 BUG问题
  • div显示边框线
  • Android 获取网络时间
  • js中的垃圾回收机制有哪些方法
  • 在javascript中
  • kraken框架
  • 如何用python编写一个程序
  • 企业安置几级残疾人
  • 国家税务总局2011年34号公告
  • 公司汽车用油计入什么科目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号