android app 适应不同大小屏幕_移动APP测试:Android屏幕适配问题二

fa37bfaf21bc404e6569de77a21255ed.png

设计选择性的布局和图片,替代资源的类型,取决于应用程序的需求。通常,应该使用尺寸和方向限定符提供选择性的布局资源,使用密度限定符提供选择性的图片资源。以下部分分别概括了该如何使用尺寸和密度限定符提供选择性的布局和图片。

48b07c20a212301f38d4fa2f47ba143a.png

选择性的布局,应该确保应用程序的布局:

· 适合在小屏幕上(确保可以实际使用)

· 在大屏幕上,确保充分利用额外的屏幕空间

· 适应竖屏和横屏

如果用户界面,需要让位图来适应视图的大小(如一个按钮的背景图片),应该使用Nine-Patch 位图文件。Nine-Patch文件基本上是一个PNG文件它可以在特定的二维地区伸展。当系统需要拉伸位图所在的视图时,系统会拉伸Nine-Patch文件,但是仅仅拉伸的是指定区域。正因为如此,不需要提供不同的屏幕尺寸不同的图片,因为Nine-Patch的位图,可以调整到任何尺寸。然而,应该为不同的屏幕密提供不同的Nine-Patch文件。

选择性的图片

gif;base64,R0lGODlhAQABAIAAAP

Figure 4. 支持各密度的位图的相对大小

几乎每个应用程序都应当为不同的屏幕密度提供图片资源,因为几乎每一个应用程序都拥有一个启动图标,而改图标应当在不同密度的屏幕上显示良好。

注: 只需提供密度相关的位图文件(.png, .jpg, 或者 .gif) 和 Nine-Path 文件(.9.png)。如果需要使用XML来定义形状,颜色或者可绘制的资源,应当在默认的drawable 目录备份一份。

要创建不同密度的选择性的图片,应该在四个广义密度之间遵循3:4:6:8的缩放比例。比如,一个中密度下为48x48像素的位图(应用程序启动图标),与之对应的所有不同的尺寸应当是:

· 低密度为36x36

· 中密度为48x48

· 高密度为72x72

· 超高密度为96x96

配置实例

为了您针对不同类型的设备进行设计,这里是典型的屏幕宽度的一些数字:

· 320dp: 一个典型的手机屏幕 (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, 等).

· 480dp: 像Streak一样的中立平板屏幕 (480x800 mdpi).

· 600dp: 7”平板 (600x1024 mdpi).

· 720dp: 10”平板 (720x1280 mdpi, 800x1280 mdpi, 等).

使用表2中的尺寸限定符,应用程序可以使用任何您想要的宽度和/或高度为手机和平板之间切换不同的布局资源。比如,如果600dp是平板布局所支持的最小可用宽度,可以提供这两套布局:

res/layout/main_activity.xml           # For handsets

res/layout-sw600dp/main_activity.xml   # For tablets

在这种情况下,为了让平板布局实用,可用屏幕空间的最小宽度必须为600dp。

要进一步定制UI区分大小,如7“和10”平板的情况下,可以定义额外的最小宽度布局:

res/layout/main_activity.xml

res/layout-sw600dp/main_activity.xml

res/layout-sw720dp/main_activity.xml

注意,前面的两个例子资源使用“最小宽度”限定符,swdp,它指定屏幕两边的最小值,无论设备的当前方向。因此,使用swdp是简单的通过忽略屏幕方向的方式来指定布局的整体屏幕尺寸。

然而,在某些情况下,可能重要的是布局究竟有多大的宽度或高度目前是可用的。例如,有两个并排的布局,每当屏幕宽度至少提供600dp时使用,不论设备是否是在横向或纵向。在这种情况下,资源看起来像这样:

res/layout/main_activity.xml

res/layout-w600dp/main_activity.xml

请注意,第二组使用“可用宽度”限定符,wdp。这样,一台设备可能根据屏幕的方向会使用这两种布局(如果可用宽度在一个方向至少600dp而在另一个方向小于600dp)。

如果关注的是可用高度,那么同样可以使用hdp限定符。甚至可以结合使用wdp 和 hdp 限定符。

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

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

相关文章

python的神经网络编程_Python神经网络编程 第二章 使用Python进行DIY

使用神经网络识别手写数字:import numpy# scipy.special for the sigmoid function expit(),即S函数import scipy.special# library for plotting arraysimport matplotlib.pyplot# ensure the plots are inside this notebook, not an external window%…

使用node中的express解决vue-cli加载不到dev-server.js的问题

在使用vue开发过程中,难免需要去本地数据地址进行请求,而原版配置在dev-server.js中,新版vue-webpack-template已经删除dev-server.js,改用webpack.dev.conf.js代替,所以 配置本地访问在webpack.dev.conf.js里配置即可…

脑机接口:从基础科学到神经康复

本文转自公众号:脑机接口社区大家好 ,我是米格尔尼科莱利斯,美国杜克大学神经生物学、神经学和生物医学工程教授。今天我将为大家介绍脑机接口和这一技术从基础科学到应用于神经康复的研究历程。首先,我要感谢2020腾讯科学WE大会的…

python安装失败无法访问_错误:由于环境错误而无法安装包错误:[WinError 5]访问被拒绝:...

我试图使用python -m pip install opencv-python -U pip --user将opencv python安装到windows10中的visualstudio代码中,但总是收到错误。希望有人能帮我改正错误。在我尝试了不同的建议,比如将--user放在命令行的末尾PS C:\Users\user\Desktop\sample&g…

从Airbnb的发展历程和网易云的大起大落看IT行业创新(第5周课后作业)

我想先根据个人看法回答“创新是什么?”这个空泛的问题。创新是面对当下的资源条件限制创造出能够满足动态需求或解决动态发展中的问题的新策略。这种实用化定义在大部分邻域都勉强能让定义者自圆其说,对于IT行业算是比较贴切,但是当我们把创…

c++ map 自定义排序_Java学习笔记:Map集合介绍

在介绍它之前先来看看再API文档中是如何介绍它的,看图片:由图片可以看出,Map属于双列集合,每次可以添加一对数据,并且这两个数据具有映射关系。单列集合和双列集合区别一、Map继承体系1.HashMap:存储数据采…

《智能网联汽车技术路线图 2.0》重磅发布

全文共计3644字,预计阅读时间8分钟来源 | 国汽智联(转载请注明来源)编辑 | 蒲蒲11月11日,由北京市人民政府、工业和信息化部、公安部、交通运输部、中国科学技术协会共同主办的2020世界智能网联汽车大会召开。大会现场&#xff0c…

python内存池机制_看过来啦!教你用Python进行内存管理

原标题:看过来啦!教你用Python进行内存管理现在学Python的小伙伴有很多啦!Python语言的发展前景也是有目共睹。小助手今天为大家带来了Python中内存管理的方法,一起来学习一下吧~Python中的内存管理是从三个方面来进行的,一对象的…

毕设ssm商城系统_ssm商城系统(爱淘淘购物)项目源码

ssm商城系统(爱淘淘购物)项目演示本系统采用SSM架构来搭建。服务器:tomcat7java虚拟机:jdk1.7数据库:mysql前端:Vue Bootstrap管理员用户:root root普通用户:jack 123访问路径:http://localho…

科学就是要勇于承认错误:十大错误科学结论盘点

来源: 学术头条人们不会迷信权威,但是大部分会相信“科学”。如何科学地饮食?如何科学地工作?如何科学地休息?“科学”两个字成了人们确认自己正确生活的最大保障。但如果“科学”不正确,那又会怎样呢&…

layui表头样式_layui中table表头样式修改方法

如下所示:layui.use(table, function () {var table layui.table;table.render({elem: #desTable, url: ${ctx}/alarm/queryEventShowScatter, even: true, page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文…

怎么改变表单option标签直接字体大小_不起眼却非常重要的表单交互

表单是什么?是用户和app之间的对话。作为人机交互的一种重要入口,一个好的数据输入方式是很有必要去考虑的。但现实中,我们大多设计师和产品经理前期设计的时候就没有太多的考虑,到最后开发的时候就会发现问题,然后就草…

配置文件详解

[123456localhost Desktop]$ redis-server /etc/redis/redis.conf[123456localhost Desktop]$ redis-cli 得到启动Redis的路径127.0.0.1:6379> config get dir1) "dir"2) "/home/123456/Desktop" 得到requirepass127.0.0.1:6379> config get require…

mysql-front特点_Navicat for MySQL与MySQL-Front比较 [图文]

MySQL GUI工具很多,本文就常用的Navicat for MySQL与MySQL-Front的特色功能做一个详细介绍与比较。(一)MySQL-FrontMySQL-FronMySQL GUI工具很多,本文就常用的Navicat for MySQL与MySQL-Front的特色功能做一个详细介绍与比较。(一)MySQL-FrontMySQL-Fron…

这是关于物理学的最强科普

“唯有宇宙和人类的愚蠢是永恒的”文章来源:撕蛋公众号这是关于物理学的最强科普(完整版) 本文素材主要摘录自加来道雄的《Hypersapce》和丘成桐的《The Shape of Inner Space》。凭籍本文,回顾一下两百年来的科学史,看…

wxpython实例源码_wxpython中复选框的基本使用源码实例

#codingutf-8import wxclass MyFrame(wx.Frame):def __init__(self):wx.Frame.__init__(self,None,-1,"多模测试热补丁工具",size (800,600))panel wx.Panel(self)self.checkbox1 wx.CheckBox(panel,-1,"CCC",(60,20),(200,20)) #复选框1self.checkbox2…

mysql dml影响查询_MySql--DML语句、简单查询和子查询

简要的将MySql中的insert、update、delete和select总结一下。/*****************************DML语言操作数据表**************************************/一、insert语句1、insert value形式insert into table_name value(1, 小明);2、insert set形式insert into table_name se…

pip 不是内部或外部命令 也不是可运行的程序_QT之程序打包发布

1.引言QT开发完之后,如果直接把exe文件发给别人,是没法直接用的,因为会提示缺少很多库,一种方法是把这些库拷贝出来,一起发过去,但是这样不方便且文件很大,所以需要一种文件打包发布的方法。2.环…

华为汪涛:定义5.5G,构建美好智能世界

来源:华为以下是汪涛演讲全文:尊敬的各位来宾,大家早上好!一年来,华为5G解决方案被更多的客户所选择,为世界各地社会经济的可持续发展创造价值,这些都离不开全球客户对我们的关心和支持&#xf…

『电子书』分享一波码农必备编程开发类书籍[转]

分享一些书籍 看到书籍很多,感觉很不错,就收藏下来了,是百度盘的连接,失效的可以评论一下以此更新一下连接. 书籍清单 Python编程快速上手 细说PHP(第2版) Python核心编程(第3版) Linux命令行与shell脚本编程大全(第3版) python高…