[Android5 系列—] 3. 支持不同的设备

原创 2015年07月07日 12:22:54

安卓的设备,来自全球,形状和大小各异, 也正因为这些不同的设备,您的应用就有机会被广大的用户使用。为了尽可能的在安卓上成功,您的应用就需要适用于各种不同的设备配置,包括不同的语言,屏幕大小和不同版本的安卓平台。

支持不同的语言

从您的应用中提取页面的字串显示,保存到一个外部的文件中是一个好的作法。在安卓工程中使用不同的资源文件路径很容易就可以达成了。
当使用安卓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 代码中的使用方式, 类似 :

@Override
 protected 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 APIs
    if (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">

跟Google学习Android开发-起始篇-支持不同的设备(3)

3.3支持不同的平台版本 虽然最新版本的Andr​​oid往往为您的应用程序提供了最好的的API,但你应该继续支持旧版本的Andr​​oid,直至更多的设备得到更新。这节课告诉你如何利用最新...

Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的语言

原文地址 : http://android.xsoftlab.net/training/basics/supporting-devices/index.html支持不同的设备在世界上,Android设...

Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的平台版本

原文地址 : http://android.xsoftlab.net/training/basics/supporting-devices/platforms.html每当APP使用了Android所...

[MySQL FAQ]系列 — MySQL联合索引是否支持不同排序规则

篇首语: 截止到目前的5.7.4版本为止,MySQL的联合索引仍无法支持联合索引使用不同排序规则,例如:ALTER TABLE t ADD INDEX idx(col1, col2 DESC)。...

JDK5和JDK6对JMX的ObjectName模式支持的不同(监控应用服务器系列文章)

前言:做了一个监控应用服务器的项目(支持Tocmat、WebSphere、WebLogic各版本),过程也算是磕磕绊绊,由于网上缺少相关资料,或者深陷于知识的海洋难以寻觅到有效的资料,因而走过不少弯路...

Android NDK系列(5) — SO中获取Java对象的属性

我在博客上发表一些我的NDK学习心得,希望对大家能有帮助。 这一篇我们讲述如何在so中获取到Java对象属性介绍首先,之前写的文章中通过一个简单的例子从从Native中调用Java方法。下面,我们要介...

[Android5 系列—] 1. 构建一个简单的用户界面

前言安卓应用的用户界面是构建在View 和ViewGroup 这两个物件的层级之上的。 View 就是一般的UI组件,像按钮,输入框等。 viewGroup 是一些不可见的view的容器,用来定义子V...

跟Google学习Android开发-起始篇-支持不同的设备(1)

3 支持不同的设备 遍布在世界各地的Android设备有许多形状和大小。通过范围广泛的设备类型,您的应用程序有机会得到一个数量巨大的受众。为了能够在Android上尽可能地成功,你的应​​用...

跟着Google学Android —— 2.1 孩子再多 也要兼顾 —— 支持不同设备

安卓发展到现在,N previw都已经在路上了。市面上的安卓机也是成千上百万,你用你的Ice-cream Sandwich,我用我的marshmallow;你用你的7寸两手捧4K超大屏,我用我的4.5...

Android支持不同的设备

因为我看的是android的官方文档,这里就根据官方文档的内容来写。Android支持不同的设备包括三个方面:支持不同的语言、支持不同的屏幕大小、支持不懂的版本。1.支持不同的语言android系统会...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Android5 系列—] 3. 支持不同的设备
举报原因:
原因补充:

(最多只允许输入30个字)