[Android5 系列—] 3. 支持不同的设备
安卓的设备,来自全球,形状和大小各异, 也正因为这些不同的设备,您的应用就有机会被广大的用户使用。为了尽可能的在安卓上成功,您的应用就需要适用于各种不同的设备配置,包括不同的语言,屏幕大小和不同版本的安卓平台。
支持不同的语言
从您的应用中提取页面的字串显示,保存到一个外部的文件中是一个好的作法。在安卓工程中使用不同的资源文件路径很容易就可以达成了。
当使用安卓SDK 工具创建项目时,这个工具会在项目的路径中创建 res/ 文件夹,这个文件夹下面就可以放不同类型的资源文件。这个路径下也有一些默认的文件,像 res/values/strings.xml.
创建本地化目录和字符串文件
为了添加更多语言的支持,在res/目录下另外新增一个 类似values 的目录,这个目录的名字是 values+连接符+语言简写。类似:
不同语言的文件中使用不同的字符,类似:
英文的: /values/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="title">My Application</string><string name="hello_world">Hello World!</string>
</resources>
法文的: /values-fr/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources><string name="title">Mon Application</string><string name="hello_world">Bonjour le monde !</string>
</resources>
使用字符串资源
在代码中,也可以使用资源名字获取相应的字符串的值。
在Java 代码中使用R.string. 方式
// Get a string resource from your app's Resources
String hello = getResources().getString(R.string.hello_world);// Or supply a string resource to a method that requires a string
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);
在XML 中,
<TextView
android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" />
支持不同的屏幕
安卓使用两个主要的属性来分类设备的屏幕: 尺寸和分辨率。您应该预料到您的应用将会被安装的设别的大小和分辨率的区间。因此, 您可以导入一些替代性资源来优化你的应用的显示来适应不同的屏幕大小和分辨率。
- 有四种广义上的尺寸: 小, 一般, 大, 超大
- 有四种广义上的密度: 低(ldpi), 中等(mdpi), 高(hdpi), 超高(xhdpi)
定义不同的布局和位图来使用不同的屏幕,和语言设置类似,同样要把这些替换的资源放在分开的目录中。
创建不同的布局
同样在 res/ 目录下, 以-为后缀名。
在java 代码中的使用方式, 类似 :
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);
}
默认状况下, layout/main.xml 使用的是纵向的布局。
创建不同的位图
提供不同的位图资源来使用不同的密度。
为了产生这些图片,你应该从你的矢量格式的原始资源,并生成使用以下规模的增加每个密度图像
- xhdpi: 2.0
- hdpi: 1.5
- mdpi: 1.0 (baseline)
- ldpi: 0.75
然后, 把这些文件放在drawable 的资源路径下, 类似:
支持不同的平台版本
最新版本的安卓提供最大集的API, 但是您需要继续支持旧版。
指定最小和目标的API
方法就是在 AndroidManifest.xml 文件中设置 minSdkVersion 和 targetSdkVersion属性。
类似:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... ><uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />...
</manifest>
查看系统运行的版本
安卓中使用 Build 的常量类来给不同版本的平台定义一个编码。 类似代码:
private void setUpActionBar() {// Make sure we're running on Honeycomb or higher to use ActionBar APIsif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {ActionBar actionBar = getActionBar();actionBar.setDisplayHomeAsUpEnabled(true);}
}
使用平台的样式和主题
对话框效果的活动
<activity android:theme="@android:style/Theme.Dialog">
透明背景效果的活动
<activity android:theme="@android:style/Theme.Translucent">
使用自己定义在 /res/values/styles.xml: 中的主题
<activity android:theme="@style/CustomTheme">
使主题应用于整个应用, 在 中添加android:theme
<application android:theme="@style/CustomTheme">
[Android5 系列—] 3. 支持不同的设备相关推荐
- 全新英特尔®凌动™处理器E3900系列:支持下一代智能互联的物联网设备 —— 这个全新处理器系列把计算能力迁移到更靠近传感器的位置,从而减轻把所有处理工作推向数据中心的需求...
物联网让数十亿智能互联设备互相连接,正在改变人们的生活和工作方式.到2020年,互联设备的数量预计将显著提高,500亿个设备(思科IBSG)每年产生44 ZB(44万亿字节)的数据,并且在端和雾网络中 ...
- Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的语言
原文地址 : http://android.xsoftlab.net/training/basics/supporting-devices/index.html 支持不同的设备 在世界上,Androi ...
- 库克回应 iPhone 11 系列不支持 5G;哈啰 App 被下架;Flutter 1.9 稳定版发布 | 极客头条...
快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...
- 小米笔记本目前仅win10系列系统支持触摸板
今年参与了双十一,挥霍了一把,买了最高配最新款小米笔记本15.6寸16G版本.到手后,总结了几个亮点: 1,非常喜欢的一点就是触摸板.除了尺寸大,需特别强调的是支持双指缩放,双指抓动代替滚轮,三指切换 ...
- 【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备
背景 硬件要求1:PS3 手柄 + 手柄配套的USB线 硬件要求2:已经获得 ROOT 权限并且支持蓝牙的安卓设备 软件要求1:Sixaxis Compatibility Checker PS3 手柄 ...
- TeamViewer远程访问和控制功能现已支持所有安卓设备
全新 "通用增值模块"可在所有安卓 7.0及以上版本智能手机上实现远程访问,并支持键盘输入 TeamViewer现已支持为Google Pixel系列.小米.OPPO.vivo.R ...
- 《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO
<Windows核心编程系列>九谈谈同步设备IO与异步设备IO之同步设备IO 同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请 ...
- 华为android_19,荣耀再增4款支持EMUI8.0机型 华为支持Android8.0设备增致19款
原标题:荣耀再增4款支持EMUI8.0机型 华为支持Android8.0设备增致19款 继此前,华为宣布,旗下(包括华为.荣耀)有15款机型已经预装或未来将支持基于Android8.0的EMUI8.0 ...
- 三菱je-a系列伺服支持modbusrtu 协议吗_入门课程 | 三菱FX系列PLC的软元件介绍
点击箭头处"工业之家",选择"关注公众号"! 三菱FX系列PLC的软元件介绍 PLC的软元件很多,主要有输入继电器.输出继电器.定时器.计数器.数据寄存器和常 ...
最新文章
- ubuntu(16.04.01)学习-day1
- Cassandra 常见错误索引
- lintcode-34-N皇后问题 II
- 【每周CV论文】初学深度学习图像超分辨应该要读的文章
- TP查询搜索函数的find select get value
- python 教学_「Python基础」一次就装好Python手把手装到好
- OJ1008: 美元和人民币
- 如何成为一个成功的 Java 开发人员?
- Eclipse alt+/语法不提示的解决方法
- Bilinear Pairing双线性配对的解释
- css 六角形_创建数字六角形瓷砖图(第1部分)
- python样条插值(二)
- 阿里字体图标库的使用
- 启动auditd时,报错如下,怎么解决?
- 平板电脑可以用手写的计算机软件,手写平板电脑哪款好 手写平板电脑有哪些推荐...
- 《玩透嵌入式C的角角落落》当你需要循环体至少执行一次时,选择do
- FTP 21端口和20端口有什么区别?
- 三菱机械臂demo程序
- 病毒预报:Trojan_Generic.F
- OSI 7层网络模型