位置: 编程技术 - 正文

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

  • 缴纳购销合同印花税怎么算
  • 公司给员工代办失业证
  • 代销和委托代销区别
  • 不确认递延所得税的特殊情况
  • 月初没报完税可以开票吗
  • 企业增值税必须退税吗?
  • 应交所得税的计税依据
  • 定期定额个体工商户怎么报税
  • 预缴企业所得税计税依据
  • 企业年报社保都是0人的公司
  • 出纳单据交接表怎么填写
  • 国内旅客运输服务电子普通发票
  • 股息红利需要企业交税吗
  • 怎么分清复利和年金
  • 以前多计提了应付职工薪酬怎么平账?
  • 个人所得税手续费
  • 厂房租赁税率是房东交的吗
  • 企业股权投资损失
  • 4.86的税率怎么算
  • 对公账户转法人私人账户用途写什么
  • 哪些项目可以不报建
  • 代收代付水电费会计分录
  • 税控盘上报
  • 货物发出未开票
  • 收到退回的投标保证金
  • 怎么快速关闭电脑屏幕快捷键
  • 代理报关费0税率
  • 销项税多了冲销部分的怎么做账
  • 在win7系统中如何让电脑恢复出厂设置方法
  • php导出数据到excel
  • 怎么增加c盘空间容量
  • 总公司的固定资产可以划转子公司
  • 销售商品售后回购
  • 7zip怎么压缩文件为rar
  • dxva2.dll是什么意思
  • 龟背竹的养殖方法和管理
  • 企业收入的具体表现
  • 工会经费如何在网上购物吗
  • 什么是累计预扣预缴应纳税所得额
  • 汇兑损益计算器
  • 个体开发票额度
  • 蔬菜免征增值税优惠
  • 企业折旧申报备案怎么写
  • 企业确认收入实现的条件有哪些?
  • 季度报是什么时候报
  • 企业的资产必须符合哪些条件
  • 公司被吊销营业执照的法律后果是什么?
  • 普票和专票的
  • access里面也暗含了sql
  • 出口不报关怎么收款
  • 农业用地租赁是免税的吗
  • 代扣代缴个人所得税手续费返还政策
  • 借方和贷方是什么意思 现金日记账
  • 增值税附加税减半政策
  • 小规模其他业务收入交多少税率
  • 进项票取得晚了怎么抵扣
  • 土地增值税怎么预交税款
  • mysql应用案例
  • windows vista如何安装
  • 如何将windows安装到u盘
  • mac上怎么截图
  • uzqkst.exe - uzqkst是什么进程
  • win10系统怎么清理
  • linux的用法
  • 怎么清理win7
  • win8怎么设置
  • win8.1技巧
  • 将目录下的文件和文件夹按类型排序
  • Vuforia 4.0 beta——Object Recognition (二)
  • linux 定时任务
  • 数据结构分析时间复杂度
  • android javascript 混淆配置。
  • it unes
  • jq拖拽功能
  • nodejs esmodule
  • js闭包作用问题解决应用
  • python中编写程序
  • 内蒙古国家税务
  • 纳税申报的期限是多久
  • 按月申报印花税如何计税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设