位置: 编程技术 - 正文

教你来彻底理解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 官方百分比适配库(安卓百分百)

  • 小规模公司减免的增值税怎么算
  • 城市维护建设税减免税优惠政策
  • 捐赠支出纳税调减
  • 一般纳税人开普票税率是多少
  • 印花税的征税范围
  • 专项工程支出计入什么科目
  • 房产税是按不含税租金收入
  • 坏账准备应计入
  • 怎么查企业适用哪个会计制度教学视频
  • 使用权资产是什么类科目
  • 单位代缴个人所得税流程
  • 息税折旧摊销前利润是什么意思
  • 上期留抵税额如何计算
  • 企业租车接送员工合法吗
  • 母公司代子公司付款合法吗
  • 留抵进项税抵欠税后期末未交增值税会减少吗
  • 原材料计划价实际价区别
  • 公司购买商品房可以抵扣增值税吗
  • 跨县提供建筑服务增值税申报
  • 建筑公司工程款支付审批流程
  • 工会财务任务是什么
  • 自制销售清单可以公开吗
  • 汇算清缴补交所得税后报表需要调整吗
  • 收到财政厅的补助怎么办
  • 预提开发成本超过10%部分计算的销售成本转回
  • 顺丰充值的钱可以退吗
  • php tars
  • u启动u盘怎么装系统
  • 出卖固定资产企业处罚
  • window10如何设置休眠时间
  • 苹果macOSBigSur是什么型号
  • 双线服务器
  • php获取文件内容的函数
  • 非货币性资产对外投资企业所得税例题
  • 俄勒冈州地理之歌
  • php实现图片上传
  • 冲减应付账款如何做账
  • php parse_str() 函数的定义和用法
  • 用流程图的形式写出视觉的形成过程
  • php原生导出excel表单元格格式
  • 子公司使用母公司固定资产
  • 诉讼费发票丢失可以补开吗
  • 典当公司收到房款怎么办
  • 税控盘没交年费会怎么办
  • 零星开支是什么会计科目
  • python中类方法有什么用
  • dedecms官网
  • mysqldump -s
  • 无票收入后又开票怎么办
  • 交易性金融包括哪些
  • 附加税多计提了怎么调整
  • SQL Server 2008用'sa'登录失败,启用'sa'登录的解决办法
  • myeclipse配置数据库连接
  • sql语句自动执行
  • mysql "too many connections" 错误 之 mysql解决方法
  • 购销合同谁来做
  • mongodb修改数据库名称
  • 纳税人缴纳的税款叫做什么
  • 印花税怎么用
  • 业务招待费汇算清缴填哪个表
  • 贷款利息进项税额转出
  • 收回应收账款账面余额
  • 购入土地使用权用于建造厂房分录
  • 行政单位工会经费
  • 物流运输业务
  • 带息票据与不带息票据
  • 临建费用包含在哪里
  • 日记账自动生成
  • sql数据库批量添加数据
  • xp系统插u盘没反应怎么解决
  • kb2859537是什么文件
  • win7 64位纯净版图标变成了一样该怎么办?win7旗舰版图标变成一样的解决方法
  • Linux 压缩某个文件夹的实现方法
  • uploadify文件上传
  • json对象如何取值
  • windows批处理命令教程
  • android主流分辨率
  • python cookie session
  • python编写简单的计算器加减乘除
  • 税务师如何执业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设