Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[翻译]Android教程-保存数据-支持不同的屏幕

[翻译]Android教程-保存数据-支持不同的屏幕

作者头像
LeoXu
发布于 2018-08-15 06:42:12
发布于 2018-08-15 06:42:12
64700
代码可运行
举报
文章被收录于专栏:LeoXu的博客LeoXu的博客
运行总次数:0
代码可运行
  • 有四种一般的尺寸: 小,一般大,大,超大
  • 还有四种一般的像素密度: 低 (ldpi), 中 (mdpi), 高 (hdpi), 超高 (xhdpi)

为了声明你想要使用在不同屏幕上的布局和位图 , 你必须在不同的路径中放置这些可选的资源 , 这类似于针对不同的语言字符串你所要做的事情 . 你也要也要意识到屏幕方向(横向或者纵向)也要被考虑成一种屏幕尺寸,所以许多的应用会修改布局来优化用户在不同的屏幕方向上的体验 .

创建不同的布局


为了在不同的屏幕尺寸上优化你的用户体验,你应该为每一个你想要支持的屏幕尺寸创建单独的文件 . 每一个布局应该被保存在对应的资源路径中,使用带有  -<屏幕_尺寸> 后缀的名称 . 例如,对于大屏幕的单独布局应该被保存在 res/layout-large/ 下面.

注意 : Android 会自动缩放你的布局,来适当的适应屏幕 . 如此,你针对不同屏幕尺寸的布局就不需要担心UI元素的绝对尺寸,而是将重点放在影响到用户体验的布局结构上来 (比如重要视图相对于相邻视图的尺寸和位置 ).

例如,下面这个项目包含了一个默认的布局和一个针对大屏幕的可选布局 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyProject/
    res/
        layout/
            main.xml
        layout-large/
            main.xml

文件名必须精确相同,但他们的内容时不同的,这是为了响应屏幕尺寸来提供优化了的UI .

像往常一样在你的应用中引用布局文件 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Override  protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.main); }

系统会基于你的应用所运行的设备的屏幕尺寸来从对应的布局路径加载布局文件 . 更多有关Android如何选择对应的资源的信息可以在 提供资源 指南中找到 .

作为另外一个示例,这里是一个带有针对横向屏幕的可选布局的项目 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyProject/
    res/
        layout/
            main.xml
        layout-land/
            main.xml

默认的, layout/main.xml 文件用于纵向屏幕 .

如果你想要为纵向屏幕提供一个指定的布局,而且是大屏幕 , 那么你就要同时使用large和land限定符 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyProject/
    res/
        layout/              # default (portrait)
            main.xml
        layout-land/         # landscape
            main.xml
        layout-large/        # large (portrait)
            main.xml
        layout-large-land/   # large landscape
            main.xml

注意: Android 3.2 及其以上版本支持许多可以让你用一种与像素密度无关的方式基于最小的宽度和高度的屏幕尺寸来指定的高级方法. 这一节对此不错叙述. 更多的信息,见 设计用于多种屏幕 .

创建不同的位图 


你应该针对一般的项目密度类型提供位图资源的恰当缩放版本: 低的, 中的, 高的 和 超高的项目密度 . 这有助于你在所有的屏幕像素密度上都能取得好的图形质量 .

为了生成这些图像,你应该从矢量格式的源生资源开始,使用如下尺寸范围为每一种项目密度生成图像 :

  • xhdpi: 2.0
  • hdpi: 1.5
  • mdpi: 1.0 (基线)
  • ldpi: 0.75

这就意味着如果你为xhdpi设备生成了一张 200x200 图片,你就应该用 150x150 为hdpi , 100x100 为 pi, 以及 75x75 为ldpi设备生成同样的资源 .

然后,将这些文件放到对应的图形资源路径中 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyProject/
    res/
        drawable-xhdpi/
            awesomeimage.png
        drawable-hdpi/
            awesomeimage.png
        drawable-mdpi/
            awesomeimage.png
        drawable-ldpi/
            awesomeimage.png

任何时间你引用 @drawable/awesomeimage, 系统都会基于屏幕的像素密度选择对应的位图 .

注意: 低密度 (ldpi) 资源并不总是需要的 . 当你提供了hdpiWhen you provide hdpi 资源, 系统会将它们缩小一半来适配 ldpi 的屏幕.

更多有关为应用创建图标资源的提示和指南,见 图标设计指南.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014/05/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android 适配各国语言、屏幕尺寸、系统版本及常见适配方法总结
全世界安卓智能手机语言不相同,由于各厂家生产出的系统、屏幕也各异,随着SDK不断更新不同版本也有区别,android适配技能日益成为必不可少的一项专业技能。根据网上的资料和个人经验总结,整理一份目前比较完整的适配大全,有疏漏之处还望指正。
Android技术干货分享
2019/03/27
1.4K0
Android 适配各国语言、屏幕尺寸、系统版本及常见适配方法总结
创建支持多种屏幕尺寸的Android应用
Android涉及各种各样的支持不同屏幕尺寸和密度的设备。对于应用程序,Android系统通过设备和句柄提供了统一的开发环境,大部分工作是校正每一个应用程序的用户界面到它显示的屏上。与此同时,系统提供APIs允许你控制应用界面为特定的屏幕尺寸和密度,为不同屏幕的配置提供最优化的用户界面设计。例如,你可能会要一个平板电脑的用户界面,这不同于手机的用户界面。 虽然系统能缩放,调整其尺寸,以使应用软件工作在不同屏上,但是应该尽量优化应用软件适应不同的屏幕尺寸和密度。为此,对所有设备的用户体验应最大化且应让用户们相
欢醉
2018/01/22
2.7K0
Android适配全面总结(一)----屏幕适配
版权声明:本文为博主原创文章(部分引用他人博文,已加上引用说明),未经博主允许不得转载。https://www.jianshu.com/p/7aa34434ad4d
AWeiLoveAndroid
2018/09/03
2.3K0
Android适配全面总结(一)----屏幕适配
Android开发:最全面、最易懂的Android屏幕适配解决方案
给你带来一种全新、全面而逻辑清晰的Android屏幕适配思路,只要你认真阅读,保证你能解决Android的屏幕适配问题!
Carson.Ho
2019/02/22
3.1K0
【Android 屏幕适配】屏幕适配基础概念 ④ ( 屏幕适配限定符 | 手机/平板电脑设备屏幕适配 )
Android 系统加载应用资源时 , 会根据当前运行应用的设备的相关属性 , 如 : 屏幕尺寸 / 屏幕像素密度 / 宽高比 / 屏幕方向 等属性 , 加载不同的屏幕适配限定符目录下的资源 ;
韩曙亮
2023/03/30
7.1K0
【Android 屏幕适配】屏幕适配基础概念 ④ ( 屏幕适配限定符 | 手机/平板电脑设备屏幕适配 )
android系统如何自适应屏幕大小
1、屏幕相关概念 1.1分辨率 是指屏幕上有横竖各有多少个像素 1.2屏幕尺寸 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 android将屏幕大小分为四个级别(small,normal,large,and extra large)。 1.3屏幕密度 每英寸像素数 手机可以有相同的分辨率,但屏幕尺寸可以不相同, Diagonal pixel表示对角线的像素值(=),DPI=933/3.7=252 android将实际的屏幕密度分为四个通用尺寸(low,medium,high,and extra high) 一般情况下的普通屏幕:ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi 对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚 1.4密度无关的像素(Density-independent pixel——dip) dip是一种虚拟的像素单位 dip和具体像素值的对应公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160) 当你定义应用的布局的UI时应该使用dp单位,确保UI在不同的屏幕上正确显示。 手机屏幕分类和像素密度的对应关系如表1所示 手机尺寸分布情况(http://developer.android.com/resources/dashboard/screens.html)如图所示, 目前主要是以分辨率为800*480和854*480的手机用户居多 从以上的屏幕尺寸分布情况上看,其实手机只要考虑3-4.5寸之间密度为1和1.5的手机 2、android多屏幕支持机制 Android的支持多屏幕机制即用为当前设备屏幕提供一种合适的方式来共同管理并解析应用资源。 Android平台中支持一系列你所提供的指定大小(size-specific),指定密度(density-specific)的合适资源。 指定大小(size-specific)的合适资源是指small, normal, large, and xlarge。 指定密度(density-specific)的合适资源,是指ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high). Android有个自动匹配机制去选择对应的布局和图片资源 1)界面布局方面    根据物理尺寸的大小准备5套布局:     layout(放一些通用布局xml文件,比如界面顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),     layout-small(屏幕尺寸小于3英寸左右的布局),       layout-normal(屏幕尺寸小于4.5英寸左右),     layout-large(4英寸-7英寸之间),     layout-xlarge(7-10英寸之间) 2)图片资源方面   需要根据dpi值准备5套图片资源:     drawable:主要放置xml配置文件或者对分辨率要求较低的图片     drawalbe-ldpi:低分辨率的图片,如QVGA (240x320)     drawable-mdpi:中等分辨率的图片,如HVGA (320x480)     drawable-hdpi:高分辨率的图片,如WVGA (480x800),FWVGA (480x854)     drawable-xhdpi:至少960dp x 720dp Android有个自动匹配机制去选择对应的布局和图片资源。   系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。   在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。 3、AndroidManifest.xml 配置 android从1.6和更高,Google为了方便开发者对于各种分辨率机型的移植而增加了自动适配的功能           <supports-screens            android:largeScreens="true"               android:normalScreens="true"              android:smallScreens="true"               android:anyDensity="true"/> 3.1是否支持多种不同密度的屏幕 android:anyDensity=["true" | "false"]  如果android:anyDensity
用户2192970
2019/02/21
5.3K1
Android图片资源
用户1172465
2018/01/05
1.2K0
Android图片资源
如何让一套代码完美适配各种屏幕?
区别于iOS,android设备有不同的分辨率大小以及不同厂商的系统,目前市场的分辨率可以看下相关统计。
CRMEB商城源码
2022/07/19
1.2K0
谈谈Android屏幕适配的那些事,我们到底该怎么去选择
每个Android程序员都会遇见一个棘手的问题,那就是手机适配。因为现在出现了许多分辨率的手机,所以我们必须得考虑到各种分辨率的手机适配,这对于程序员来说是一个必须要解决的麻烦。
Android技术干货分享
2019/03/26
1.1K0
谈谈Android屏幕适配的那些事,我们到底该怎么去选择
Android图片相关
Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB8888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。
码客说
2019/10/22
7330
Android碎片化之屏幕适配
现如今,因Android系统的开放性,市场上出现了不同厂商出厂的各种android版本、分辨率、型号等设备。那对我们开发来说,碎片化绝对是一个让人头脑炸裂的问题,Android系统碎片化、Android机型屏幕尺寸碎片化、Android屏幕分辨率碎片化。市面上安卓手机的主流屏幕尺寸种类繁多,就算搞定了屏幕尺寸问题,各种分辨率又让人眼花缭乱。面对测试同学抛过来的适配问题,心肝肺都要颤一颤。今天我们就谈谈屏幕适配的解决步骤。
优测云服务平台
2019/12/25
1.3K0
Android碎片化之屏幕适配
046android初级篇之android多分辨率兼容
android:anyDensity="true"时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源。
上善若水.夏
2018/09/28
7140
Android开发 屏幕适配之像素密度适配
由于市场上采用Android系统的设备种类繁多,迫使Andriod开发人员不得不做烦人的适配工作。
全栈程序员站长
2022/09/06
1.4K0
Android开发 屏幕适配之像素密度适配
【知识普及】平板的屏幕分辨率和屏幕比例_和平精英平板分辨率
针对IOS,Android 手机分辨率大小、屏幕尺寸、开发尺寸的参考。 在实际页面的开发过程,往往显示屏幕的宽度换算为像素尺寸的1/2。
全栈程序员站长
2022/09/21
5.4K0
【知识普及】平板的屏幕分辨率和屏幕比例_和平精英平板分辨率
浅谈 Android 屏幕适配
分辨率 屏幕上物理像素的总数。添加对多种屏幕的支持时, 应用不会直接使用分辨率;而只应关注通用尺寸和密度组指定的屏幕尺寸及密度。
acc8226
2022/05/17
1.4K0
浅谈 Android 屏幕适配
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511
韩曙亮
2023/03/27
6860
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
Android开发笔记(八十一)屏幕规格适配
适配各种屏幕规格,首先要取到系统对于屏幕的配置信息,这些配置可从工具类Configuration获得。Configuration对象在Activity中通过调用getResources().getConfiguration()得到,该对象的常用属性说明如下: touchscreen : 屏幕触摸方式。有下列几种取值定义:"未定义", "不支持触摸", "专用笔触摸", "支持手指触摸" keyboard : 物理键盘样式。有下列几种取值定义:"未定义", "无物理键盘", "全键盘", "十二格键盘" keyboardHidden : 键盘状态。有下列几种取值定义:"未定义", "未隐藏或软键盘", "已隐藏", "软键盘" hardKeyboardHidden : 物理键盘状态。有下列几种取值定义:"未定义", "未隐藏", "已隐藏" navigation : 方向控制样式。有下列几种取值定义:"未定义", "无方向控制", "方向键", "轨迹球", "滚轮" navigationHidden : 方向控制状态。有下列几种取值定义:"未定义", "未隐藏", "已隐藏" orientation : 屏幕方向。有下列几种取值定义:"未定义", "竖屏", "横屏" 以上属性除了屏幕方向是有用的,其他的基本没什么用。 如果属性发生变化,可重写onConfigurationChanged函数监测最新的属性值。但是由屏幕旋转导致的屏幕方向变化,按照生命周期走的是原方向onDestroy然后新方向onCreate,并不触发onConfigurationChanged方法,所以该方法基本也没机会用到。
aqi00
2019/01/18
1.5K0
Android一些关于分辨率和布局的设置
1、Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢? drawable- hdpi、drawable- mdpi、drawable-ldpi的区别: (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854) (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480) (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240
欢醉
2018/01/22
1.3K0
Android drawable微技巧,你所不知道的drawable的那些细节
用户1158055
2018/01/08
2.6K1
Android drawable微技巧,你所不知道的drawable的那些细节
为 DP 设计布局
什么是屏幕尺寸、屏幕分辨率、屏幕像素密度? 什么是dp、dip、dpi、sp、px?他们之间的关系是什么? 什么是mdpi、hdpi、xdpi、xxdpi?如何计算和区分? 题图中的每一个矩形都代表着一种Android设备。Android系统碎片化问题的严重性,让我们不得不面对屏幕适配的问题。 屏幕尺寸: 屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米。 比如常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等。 屏幕分辨率: 屏幕分辨率是指在横纵向上的像
阿凯
2018/06/29
5760
推荐阅读
相关推荐
Android 适配各国语言、屏幕尺寸、系统版本及常见适配方法总结
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验