位置: 编程技术 - 正文

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

  • 制造企业都需要什么人才
  • 收到上年度所得税发票
  • 1号没有抄税可以补税吗
  • 建筑业增值税税率2022
  • 开办费的帐务处理
  • 不单独计价的包装物是什么意思
  • 发票勾选后什么时候可以抵扣税
  • 公司打到个人账户需要多久
  • 装载机属于哪种车型
  • 2020年建筑企业税收优惠政策
  • 其他综合收益科目性质
  • 应交税费和税金及附加的区别
  • 小规模公司缴税以后公转私
  • 航空运单可以作为提货凭证吗
  • 利息保障倍数计算公式资本化利息
  • 以旧换新会计处理金银首饰
  • 增值税专用发票可以开电子发票吗
  • 非企业所得税税率
  • 国有企业的所得税怎么算
  • 合同印花税多交了怎么退
  • 个人捐款单位需要记账吗
  • 增值税主要有三种类型
  • 怎么修改财务负责人信息
  • 旅行社差额征收的会计处理
  • 分公司的发票可以由总公司开吗
  • 华为鸿蒙系统超级终端怎么用
  • 华为手机hms提醒
  • 从银行提取备用金填制什么凭证
  • 实际利率是r还是i
  • 2020快手怎么删除
  • 消防工程改造需要什么资质
  • bios中怎么设置显卡
  • 清理系统所有垃圾
  • 出卖固定资产企业处罚
  • PHP:mcrypt_enc_get_iv_size()的用法_Mcrypt函数
  • 公司已开票给客户,但客户未打款怎么办?
  • 公司法人变更后银行账户怎么变更
  • web前端基本知识
  • 预收账款增值税纳税义务
  • css水平居中和垂直居中怎么设置
  • 用命令ls-al显示出文件ff
  • 款付了对方没开发票咋办
  • 销售商品怎么做好宣传
  • 可以抵扣土地增值税的项目
  • 不能抵扣的进项税转出账务处理
  • 支付运输费计入
  • 在计算应纳税所得额时,纳税人因自然灾害
  • 应付账款坏账损失的会计分录
  • 融资租赁期间的维修费由谁承担
  • 外购商品职工福利进项税额转出如何记账?
  • 制造费用怎么摊销到成本?
  • 关于出售使用过的产品
  • 长期待摊费用做账
  • 开具红字发票后所冲销的销项税应该怎么处理?
  • 公司注销其他应付款法人借款
  • 工程材料票占工程款的比例
  • 公允价值变动损益是什么意思
  • 企业实缴各类税金的总额
  • 规划设计费入什么科目
  • 怎么结转本月期间损益
  • windows下命令
  • windows任务管理器打不开
  • 播放器状态
  • macbookzen
  • win1021年更新
  • cocos2d教程
  • javascript怎么学
  • excel表格时间选择
  • 安卓网页开发工具
  • Python中文分词的第三方库
  • 浅析Javascript ES6中的原生Promise
  • linux Shell获取某目录下所有文件夹的名称
  • linux查看端口占用情况并杀掉进程
  • 安装node-sass报错
  • 广告费属于什么会计科目
  • 对计划单列市税务局不服向谁复议
  • 国家税务局扬州
  • 10月份税务申报
  • 自建房交契税需要什么
  • 中国浙江到英国伦敦多少公里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设