[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">
版权声明:本文为博主原创文章,未经博主允许不得转载。

支持不同的设备

见:https://developer.android.com/training/basics/supporting-devices/
  • hirohrj123
  • hirohrj123
  • 2013年10月16日 10:38
  • 518

CSS 为不同类型的设备建立样式表

针对要显示的页面类型(桌面PC,笔记本,平板,手机,页面的印刷版本…) 方法一:在HTML中利用,把type改成media属性          media="screen and (max-...
  • chq11106004389
  • chq11106004389
  • 2015年12月30日 15:39
  • 676

3.0 支持不同设备

目前android系统已被应用到多种设备,这些设备形状大小各不尽相同。
  • teddy99999
  • teddy99999
  • 2014年01月08日 22:10
  • 498

不同设备支持

ldpi 0.75 240*320 mdpi 1 320*480 hdpi 1.5 480*800  480*854 xhdpi 2 720*960 720p xxhdpi 3...
  • laozhong110
  • laozhong110
  • 2015年07月27日 10:26
  • 337

pAdTy_-8 支持不同的设备

2015.10.22 个人英文翻译练习笔记(低水准)。原文地址:http://developer.android.com/training/basics/supporting-devices/ind...
  • misskissC
  • misskissC
  • 2015年11月10日 23:25
  • 471

Training--支持不同的设备

支持不同的设备 全世界的安卓设备拥有各种各样的形状和大小。拥有如此广泛的设备类型,你的app无疑也有机会赢得广泛的群众基础。为了达到这个目的,你不得不针对这些设备的配置信息适配你的app。通常你应该...
  • zhangyingli
  • zhangyingli
  • 2014年07月06日 11:08
  • 264

android --支持不同的设备

如果你想要在Android领域取得更大的成功,那么你的应用程序必须适应各种各样的设备配置。很多重要的变化因素你都要考虑到,包括不同的语言、屏幕大小以及android平台的版本。 接下来就开始...
  • zshow0901
  • zshow0901
  • 2012年11月16日 00:02
  • 498

Android支持不同的设备

因为我看的是android的官方文档,这里就根据官方文档的内容来写。Android支持不同的设备包括三个方面:支持不同的语言、支持不同的屏幕大小、支持不懂的版本。1.支持不同的语言android系统会...
  • u012178465
  • u012178465
  • 2017年07月11日 21:41
  • 88

支持不同的设备(1)支持不同的语言

创建本地路径和String文件 Android app在运行时,会根据手机的设置来加载不同的String文件 创建不同的values文件夹和strings.xml文件   MyProject/...
  • yymonkeydo
  • yymonkeydo
  • 2014年12月27日 16:20
  • 188

APP支持不同的设备 之 支持不同的语言

实现让你的APP支持多语言,通常最好的做法是把你的APP里面的字符串单独的提取存放到一个外部文件里面。android开发实现这个就很简单,每个项目里面都有这么一个资源目录。 如果你利用android...
  • orionhan
  • orionhan
  • 2013年03月17日 21:25
  • 360
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Android5 系列—] 3. 支持不同的设备
举报原因:
原因补充:

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