android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配

http://www.tuicool.com/articles/nuyMZb

 

1 Android手机目前常见的分辨率 
1.1 手机常见分辨率: 
4:3 
VGA     640*480 (Video Graphics Array) 
QVGA  320*240 (Quarter VGA) 
HVGA  480*320 (Half-size VGA) 
SVGA  800*600 (Super VGA) 
5:3 
WVGA  800*480 (Wide VGA) 
16:9 
FWVGA 854*480 (Full Wide VGA) 
HD        1920*1080 High Definition 
QHD     960*540 
720p    1280*720  标清 
1080p  1920*1080 高清 
1.2 分辨率对应DPI 
"HVGA    mdpi" 
"WVGA   hdpi " 
"FWVGA hdpi " 
"QHD      hdpi " 
"720P     xhdpi" 
"1080P   xxhdpi " 
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 
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)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra-high为96×96。 
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手机屏幕大小不一,有480x320, 640x360, 800x480…… 
怎样才能让Application自动适应不同的屏幕呢? 

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

总结:最好在mainifest里面添加

<!--对于很高的分辨率,除采用相应的图片外,还需要加上如下配置,来更好的适配屏幕 --> 
    <supports-screens 
        android:smallScreens="true" 
        android:normalScreens="true" 
        android:largeScreens="true" 
        android:anyDensity="true" />

 

---------------------------------------------------------------------------------------------------------------------------------------------------

android从2.1版本开始drawble分为drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。

  drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:

  (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)

  (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)

  (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)

  系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。

  在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。

Aphone一般到drawable-hdpi去取图片,drawable-hdpi没有图片再到drawable-mdpi去取图片,而后再到drawable-ldpi取图片

Apad一般到drawable-mdpi去取图片,drawable-hdpi没有图片再到drawable-ldpi去取图片

横屏含有drawable-land- hdpi、drawable-land- mdpi、drawable-land-ldpi的区别

Aphone一般到drawable-land-hdpi去取图片,drawable-land-hdpi没有图片再到drawable-land-mdpi去取图片,而后再到drawable-land-ldpi取图片,而后才会到drawable-hdpi去取图片,drawable-hdpi没有图片再到drawable-mdpi去取图片,而后再到drawable-ldpi取图片

Apad一般到drawable-land-mdpi去取图片,drawable-land-hdpi没有图片再到drawable-land-ldpi去取图片,而后才会到drawable-mdpi去取图片,drawable-hdpi没有图片再到drawable-ldpi去取图片

转载于:https://www.cnblogs.com/lteal/p/4516835.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端页面通过web3.eth.accounts无法获取账户信息

粉丝求助&#xff1a; /* 新版的方式 */var web3Provider;if (window.ethereum) {web3Provider window.ethereum;try {// 请求用户授权await window.ethereum.enable();} catch (error) {// 用户不授权时console.error("User denied account access")}} else if (wi…

thread java 关闭_怎么在java中关闭一个thread

怎么在java中关闭一个thread我们经常需要在java中用到thread&#xff0c;我们知道thread有一个start()方法可以开启一个线程。那么怎么关闭这个线程呢&#xff1f;有人会说可以用Thread.stop()方法。但是这个方法已经被废弃了。根据Oracle的官方文档&#xff0c;Thread.stop是不…

arp欺骗原理

中间人攻击——ARP欺骗的原理、实战及防御 ​ 1.1 什么是网关 首先来简单解释一下什么是网关&#xff0c;网关工作在OSI七层模型中的传输层或者应用层&#xff0c;用于高层协议的不同网络之间的连接&#xff0c;简单地说&#xff0c;网关就好比是一个房间通向另一个房间的一…

bzoj 3926

后缀自动机扩展到树形结构上。 先建出大的Trie&#xff0c;然后我们得到了一棵Trie树&#xff0c;对于树上的每个节点&#xff0c;保存一个后缀自动机从根走它代表的字符串后到达的节点&#xff0c;每次其儿子就从父亲的这个节点开始扩展。 1 /*******************************…

java memcmp_memcmp,memicmp函数

函数原型&#xff1a;extern int memcmp(void *str1, void *str2, unsigned int n)参数说明&#xff1a;str1和str2为指定作比较的字符串&#xff0c;比较两个字符串的前n个字节。所在库名&#xff1a;#include 函数功能&#xff1a;比较字符串str1和str2在内存区域中的的前n个…

Pycharm社区版安装教程(永久免费,随时升级)

首先进入JetBrain的官网(国内正常访问): https://www.jetbrains.com/ 第一眼看到的界面如下图所示: 然后找到我们的Pycharm专题页: 进入Pycharm的专题页面之后,点击下载按钮(这里有两个按钮,点任何一个都行): 然后进入到真正的下载页面你会发现有两个版本的Pycharm,一个…

apache-cxf 使用_使用Apache CXF进行Web服务学习

apache-cxf 使用在我的最后几个项目中&#xff0c;我使用了Web服务&#xff0c;在某些地方创建它们并在其他地方使用它们。 我认为标准任务&#xff08;例如创建客户端&#xff0c;创建Web服务等&#xff09;非常简单&#xff0c;如果遇到问题&#xff0c;有足够的资源。 但是对…

123 Best time to buy and sell stock iii

题解&#xff1a; 根据题目要求&#xff0c;最多进行两次买卖股票&#xff0c;而且手中不能有2只股票&#xff0c;就是不能连续两次买入操作。 所以&#xff0c;两次交易必须是分布在2各区间内&#xff0c;也就是动作为&#xff1a;买入卖出&#xff0c;买入卖出。 进而&#…

解决 invalid input detected at ‘^’ marker的问题

粉丝求助&#xff1a; 解决办法&#xff1a; Switch开不了机&#xff08;机器bai黑屏&#xff0c;如果找很黑的房间能看到屏du幕内部有zhi点透亮光&#xff09;&#xff1b; 解决方法&#xff1a;这dao是假死机&#xff0c;按住电源键12秒强制关机&#xff0c;然后再按电源键能…

PyCharm社区版设置简体中文界面

点击“File”&#xff0c;出现的菜单中点击“Settings”, 在弹出的界面中&#xff0c;选“Plugins”&#xff0c; 然后在右边输入框中输入“chinese”, 在搜索结果中&#xff0c;选中Chinese(Simplified) Language Pack&#xff0c;点击右边的“install”即可。

JMS和AWS SQS的更多高级内容

如您所知&#xff0c; AWS中的SQS SQS代表“简单队列服务”。 最近&#xff0c;在使用它的同时&#xff0c;我发现了将其称为“简单”的原因之一。 在之前的两篇文章&#xff08; 此处和此处 &#xff09;中&#xff0c;我展示了结合Spring Framework将SQS用作JMS队列提供程序 …

w10家庭版安装java不_小编为你分析win10系统安装不了java的设置办法

许多win10系统用户在工作中经常会遇到win10系统安装不了java的情况&#xff0c;想必大家都遇到过win10系统安装不了java的情况吧&#xff0c;那么应该怎么处理win10系统安装不了java呢&#xff1f;我们依照1、查看自己的电脑是32位的还是64位的(x86代表32位的)。java安装要求比…

用C语言实现津巴布韦这道算法题?

粉丝求助: 题目内容如下: 5、津巴布韦 由于计划经济失败,津巴布韦称为世界上通胀率最高的国家。这里的物价即使在一天中也会持续上涨,所以必须实时更新物品价格。例如:1个鸡蛋的价格为35亿津巴布韦元,所以超市做了每位数字的活动标价牌。 钟旭在穆加贝超市打工,有一天遇…

盘点几种数据库的分页SQL的写法(转)

Data序列——盘点几种数据库的分页SQL的写法http://www.cnblogs.com/fireasy/archive/2013/04/10/3013088.html 转载于:https://www.cnblogs.com/wangjunwei/p/4522834.html

dnslog盲注

dnslog盲注dnslog注入原理DNSlog工具什么情况下使用dnslog注入&#xff1f;Mysql DNSlog原理图DNSlog盲注利用条件DNSlog盲注操作方式实战演练查询当前数据库名&#xff1a;查询当前数据库的第一个表名&#xff1a;查询第users表一个列名&#xff1a;查询users表的username列的…

Python在cmd中配置虚拟环境ERROR: Command errored out with exit status 1:

粉丝求助: 解决办法: 具体步骤: 1.查看Python版本 2.Pythonlibs 中找到对应版本的whl文件,cp37代表3.7版本,win32代表Windows系统32位机,根据自己的电脑位数选择。

java sqlserver ssl_拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)...

工作准备•一台SQLSERVER 2005/SQLSERVER 2008服务•SQLSERVER jdbc驱动程序•Java开发环境eclipse jdk1.8•java反编译工具JD-Core反编译JDBC分析SQLSERVER客户端与服务器通信原理SQLServerConnection.class1、经过反编译分析SQLServerConnection.class文件我们可以看到登录时…

1-9其他数据库注入

文章目录 数据库注入access数据库判断access数据库常用函数查询语句构造联合查询布尔型盲注 mssql数据库mssql数据库判断环境---靶机-2k3_sp2常用函数查询语句构造联合查询报错注入布尔型盲注 数据库注入 access数据库 判断access数据库 根据url的后缀。ASP为后缀名…

tp框架 db::name_玩! 框架:为什么我会爱上它

tp框架 db::name前一段时间&#xff0c;我是房地美&#xff0c;房地美&#xff0c;Foreclosure.com和HUD等公司在房地产市场上进行一些大型部署的技术负责人。 我们运行的是您可能熟悉的传统企业Java堆栈-Spring &#xff0c; Hibernate &#xff0c;Solr等。花了几年时间&…

自动化专业向往硬件方面靠,有什么好的建议?

我的建议是: 有能力考研就先考研,考不上可以选择就业,学历还是很重要的,门槛。自动化可以找一些相关的知名企业,按照他们的招聘要求要求自己,往这个方法发展,垂直领域研究很深,你就是大佬和专家。 有个帖子讲的挺全的,虽然是文章:自动化人生 下面是理论内容,我直接…