IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android的多设备支持 -> 正文阅读

[移动开发]Android的多设备支持

1. 前言

????Android应用的多设备支持包括语言、屏幕大小、安卓平台版本等多种因素。详细内容可以参考官方文档:设备兼容性概览。为了实现不同设备的兼容,Android 提供了一个动态应用框架,供您在静态文件中提供特定于配置的应用资源(例如针对不同屏幕尺寸的不同 XML 布局)。然后,Android 会根据当前设备配置加载适当的资源。

2. 相关解决

2.1 支持不同语言

????在AndroidStudio中为strings.xml文件提供了图形化的添加多国语言的便捷方式,比如先打开strings.xml文件,然后选择Open editor
在这里插入图片描述

然后可以点击地球图标进行语言的选择,比如这里添加一个支持中文的:
在这里插入图片描述

然后在测试的时候修改语言为简体中文:
在这里插入图片描述
即可查看到效果,即应用的名字从My Application自动切换为了我的应用。不妨看下对应的自动生成的文件:
在这里插入图片描述
在本地中生成的目录为:

在这里插入图片描述
即英文为默认:/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">My Application</string>
</resources>

而中文为:/values-zh-rCN/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">我的应用</string>
</resources>

2.2 支持不同屏幕

Android中有两种常规属性来分类设备屏幕:尺寸和像素密度。

  • 尺寸通常分为4类:smallnormallargexlarge
  • 像素密度通常也分为4种:lowldpi)、mediummdip)、highhdpi)和extra highxhdpi)。

可以参考官方文档:支持不同的屏幕尺寸。为了支持不同尺寸的屏幕,在官方文档中提供了三种思路:

  • 使用允许布局调整大小的视图尺寸,即创建灵活的布局,使之能够灵活应对屏幕尺寸变化。
  • 根据屏幕配置创建备用界面布局,即创建备用布局,针对特定屏幕尺寸优化界面设计。
  • 提供可以随视图一起拉伸的位图,即创建可拉伸的九宫格位图,指示哪些区域可以拉伸,哪些区域不可以拉伸。那么可以保证在缩放图片时,图片不失真。

下面就这三种解决方法来做一些简单的案例。

2.2.1 解决方案一:创建灵活的布局

????创建适用于不同屏幕尺寸的自适应布局,最佳做法是将 ConstraintLayout 用作界面中的基本布局。且避免对布局尺寸进行硬编码,比如对大多数视图组件的宽度和高度使用 “wrap_content” 和 “match_parent”,而不使用硬编码的尺寸

????您也可以使用LinearLayout,也可以按布局权重展开子视图,以便每个视图按自身权重值所占的比例填充剩余的空间。但是,在嵌套的 LinearLayout 中使用权重将要求系统执行多次布局遍历以确定每个视图的尺寸,这会降低界面性能。幸运的是,ConstraintLayout 几乎能够构建 LinearLayout 所能构建的所有布局,而不会影响性能,因此您应该尝试将布局转换为 ConstraintLayout

这种解决方案其实在实际中或多或少大家都在使用,就不做案例了。

2.2.2 解决方案二:创建备用布局

对于备用资源,可以参考官方文档:提供备用资源
????为了提高用户在不同设备上的用户体验,应当为每一种想要支持的屏幕尺寸创建一个独有的xml布局文件。每一布局文件应当存放到恰当的资源目录下,该目录以屏幕尺寸作为后缀。例如:大屏布局文件应该放在res/layout-large/目录下。

为一组资源指定配置特定的备用资源的命名规则:

res/ 中创建以 <resources_name>-<config_qualifier> 形式命名的新目录。

  • <resources_name> 是相应默认资源的目录名称(如表 1 中所定义)。
  • <qualifier> 是指定要使用这些资源的各个配置的名称(如表 2 中所定义)。
  • 您可以追加多个 <qualifier>。以短划线将其分隔。
  • 将相应的备用资源保存在此新目录下。这些资源文件必须与默认资源文件完全同名。

由于表1表2在官网中的内容比较多,这里就简单摘要几组比较常见的。

在这里插入图片描述
在这里插入图片描述

关于典型屏幕尺寸和宽度值的对应关系这里也对应的记录下:

  • 320dp:典型手机屏幕(240x320 ldpi320x480 mdpi480x800 hdpi 等)。
  • 480dp:约为 5 英寸的大手机屏幕 (480x800 mdpi)。
  • 600dp7 英寸平板电脑 (600x1024 mdpi)。
  • 720dp10 英寸平板电脑720x1280 mdpi800x1280 mdpi 等)。

比如我们可以为横屏和竖屏创建不同的布局文件,在文件夹中拷贝一个layout副本,修改为layout-land
在这里插入图片描述
然后在布局文件中简单修改下这两个布局文件,使之布局方向不同。在AndroidStudio中会将这两个文件夹合并:
在这里插入图片描述
最终效果:
竖屏:
在这里插入图片描述
横屏:
在这里插入图片描述
当然类似的可以创建针对不同屏幕尺寸的、夜间模式的等。虽然多种配置限定符可以使用短划线分隔-符号来进行连接组合,但是需要遵循表 2 中列出的限定符的顺序。为了确保所命名的文件夹是正确的组合,还是访问官网仔细检查对比比较好。

2.2.3 解决方案三:创建可拉伸的九宫格位图

对于.9图,相信我们或多或少都听说过,将九宫格作为背景应用于视图时,框架会正确拉伸图片以适应按钮的尺寸。至于在AndroidStudio中如何找到这个编辑器,可以参考:9图制作

2.3 支持不同的平台版本

可以参考官方文档:支持不同的平台版本


References

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-21 12:18:02  更:2021-10-21 12:19:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:51:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码