您的位置:首页 > 移动开发

Android起航系列第三章:android app的兼容性

2016-01-13 21:48 405 查看

Android手机APP起航系列

本博客文章基于android官方sdk的docs文档,目的是通过此教程巩固android手机app开发的一些应知应会的基础知识,也希望能帮助同在学习android开发的小伙伴们,共同进步,如有写的不到之处,还请各位小伙伴们不吝赐教。

主要内容

1、兼容不同的屏幕

2、兼容不同的语言

3、兼容不同的android版本

一、兼容不同的设备

与苹果设备不同,全世界有大量不同形状、不同大小、不同分辨率的android设备,android设备的屏幕碎片化非常严重,这给我们开发android的应用程序带来了一定的麻烦,你很难让你的设备完美地运行在所有的android设备上。下面几张图会让你明白,不多讲(有密集恐惧症的自动跳过):









通常,在android中把屏幕大小分为四种类别:small, normal, large, xlarge;把分辨率也分为四种:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi),android系统通过对运行设备的辨别,自动加载对应的资源。开发过程中,您必须把大小不同的资源放到不同的资源目录下面。需要注意的是,android中屏幕的横放(landscape)与竖放(portrait)被视作不同的屏幕大小,所以我们的app在切换屏幕的方向时activity需要重新计算与绘制。

布局文件

通常我们用-large-land的方式修饰布局文件的存放目录,如下图:

1、项目视图如下



2、android视图如下



存放在不同的目录,资源文件名相同,比如我们可以用下面的方式来修饰布局文件

MyProject/

res/

layout/ # default (portrait)

main.xml

layout-land/ # landscape

main.xml

layout-large/ # large (portrait)

main.xml

layout-large-land/ # large landscape

main.xml

图片文件

一般情况下,对于同一图片资源,我们需要提供四种不同像素大小的图像,分别为低像素low,中像素medium,高像素high,以及超高像素extra-high,这样可以让我们的应用达到比较好的视觉质量。不同像素图片尺寸比例如下:

xxxhdpi: 4.0
xxhdpi: 3.0
xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75


ldpi并不是必须的,如果项目中没有ldpi的图像,系统会自动将hdpi的图像压缩一半作为ldpi的资源,如下图:



二、兼容不同的语言

在app的国际化时,我们需要不同的目录下(同样也是使用修饰词)创建locate文件,譬如我们常用的strings.xml文件,当app在中国大陆使用时,我们需要中文简体的配置文件,在台湾使用时,需要中文繁体的配置文件,在岛国使用时,需要用到岛国鸟语的配置文件等等。具体效果如下:



android studio中,我们可以打开translations editor编辑器直接编辑变量在不同语言环境下的值,很方便,如图:



三、兼容不同的版本

用户手机多种多用,手机中android系统也存在很多版本,所以,如果我们想让我们的应用运行在大部分android设备上,我们需要做一些额外的工作。一般情况下我们使用android support library 支持包来让我们的app能支持较早版本的android设备。

1、定义最低api和目标api

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
...
</manifest>


2、运行时检查系统版本

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);
}
}


3、使用系统的样式与主题

<activity android:theme="@android:style/Theme.Dialog">
<activity android:theme="@android:style/Theme.Translucent">
<activity android:theme="@style/CustomTheme">
<application android:theme="@style/CustomTheme">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: