[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 代码中的使用方式, 类似 :

@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">

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 01:00:16

[Android5 系列—] 3. 支持不同的设备的相关文章

Provisioning Services 7.8 入门系列教程之七 批量导入设备

续Provisioning Services 7.8 入门系列教程之六 手动添加设备 通过导入目标设备向导,可以从文件导入目标设备信息. 目标设备信息必须首先另存为 .csv 文件,然后才可以导入到设备集合中. 注意:1. 在进行批量导入时,用户必须准确记录设备的MAC地址,以及合理安排设备需要添加的站点.设备集合以及设备名称.             2.设备名称不能用已存在的名字.             3.当前Provisioning Services 对中文支持不好,尽可能不要使用中文

Provisioning Services 7.8 入门系列教程之八 自动添加设备

续Provisioning Services 7.8 入门系列教程之七 批量导入设备 对于批量导入设备,其最大的缺点是在导入前,必须准确记录所有设备的MAC地址.当然,这种方式也有许多方便之处,如可以将不同的设备添加到不同地站点.不同的集合. 下面介绍第三种方式:通过自动添加向导完成设备的添加 使用自动添加向导 自动添加向导可以自动配置各种规则,以便利用自动添加功能将新的目标设备自动添加到 Provisioning Services 数据库中. 可以在场.站点.集合或设备级别启动自动添加向导.

Android - 支持不同的设备 - 支持不同的屏幕

Android - 支持不同的设备 - 支持不同的屏幕 Android整体上按照两大类来分类设备屏幕:尺寸和分辨率.app在设备上运行应该考虑大小和分辨率.同样的,你应该包含不同的资源来让app适应不同的屏幕大小和分辨率. 整体上有四种尺寸:小的,正常的,大的,超级大的 和四种分辨率:低分辨率(ldpi),中分辨率(mdpi),高分辨率(hdpi),超高分辨率(xhdpi) 为了声明不同屏幕的不同的布局和突变,你需要把不同的资源放在不同的文件夹下,和处理不同语言的方法一样. 同样要注意到在考虑屏

API翻译 --- Supporting Different Devices 支持不同的设备

DEPENDENCIES AND PREREQUISITES  依赖和先决条件 Android 1.6 or higher YOU SHOULD ALSO READ Application Resources  应用资源 Designing for Multiple Screens 设计多屏幕 Android devices come in many shapes and sizes all around the world. With a wide range of device types,

支持移动触摸设备的纯js元素拖放插件

Dragula是一款支持移动触摸屏设备的元素拖放纯js插件.这个元素拖放插件使用简单,浏览器兼容性好,能够实现通过鼠标或在移动设备中通过手指来拖动DOM元素的位置.它的特点有: 设置非常简单 没有外部依赖 可以自动对数据进行排序 被移动项带有半透明的视觉效果 支持移动触摸设备 兼容性好,支持IE7+的所有现代浏览器 效果演示:http://www.htmleaf.com/Demo/201504171695.html 下载地址:http://www.htmleaf.com/jQuery/Layou

支持移动触摸设备的简洁js幻灯片插件

lory是一款支持移动触摸设备的简洁的js幻灯片插件.该幻灯片插件可以通过纯js调用,也可以将该幻灯片插件作为jquery插件来使用.该幻灯片的过渡动画具有硬件加速功能,并且可以定制是否使用easing效果. 以下列出该幻灯片的一些特点: 支持移动触摸设备. 简单,界面整洁,纯js调用. 可以作为jQuery插件来使用. 过渡效果支持硬件加速. 可定制easing效果. 可无限循环,制作为旋转木马. 丰富的回调函数. 效果演示:http://www.htmleaf.com/Demo/201504

技术解析系列 | PouchContainer 支持 LXCFS 实现高可靠容器隔离

技术解析系列 | PouchContainer 支持 LXCFS 实现高可靠容器隔离 划重点 本周起 PouchContainer 启动核心技术专家解析系列文章,第一篇文章将深入剖析 LXCFS 适用业务场景和原理,对 LXCFS 感兴趣的同学不要错过 引言 PouchContainer 是 Alibaba 开源的一款容器运行时产品,当前最新版本是 0.3.0,代码地址位于:https://github.com/alibaba/pouch.PouchContainer 从设计之初即支持 LXCF

Provisioning Services 7.8 入门系列教程之六 手动添加设备

续Provisioning Services 7.8 入门系列教程之五 使用Provisioning Services控制台 目前,Provisioning Services 7.8 支持三种添加设备的方式,即手动添加.批量导入和自动添加. 设备,我们可以简单理解就是一台计算机,可能是一台无硬盘.安装有网卡(支持或者不支持PXE启动)的计算机. 设备集合:可以理解为具有某些共同特性(如使用相同虚拟磁盘,相同操作系统)的一些设备,在实际生产环境中,为了便于管理,用户可以根据客户的使用情况(如操作系

智能路由器-OpenWRT 系列四 (挂载移动设备)

每次ssh登陆OpenWRT安装新软件时,都必须更新opkg opkg update 安装驱动 为了可以识别U盘/移动硬盘,必须安装相关的驱动. 一类是usb相关的驱动 opkg install kmod-usb-core #usb驱动 opkg install kmod-scsi-core #SCSI总线驱动 opkg install kmod-scsi-generic #scsi驱动 opkg install kmod-usb-uhci #USB OHCI controllers opkg