Android guide学习系列(-)——Device Compatibility(设备兼容性)
2016-09-28 11:25
441 查看
android被设计出来就可运行在手机,平板,电视上。作为一名开发者,不同的设备,不同的厂商,也导致了用户的不同,为了满足不同用户不同设备的需求,那么我们所开发的引用的兼容性变得尤为重要。
为了使我们的引用能够满足不同用户的不同设备的需求,可以从三个方面去考虑:
1.支持不同的语言(主要是为了世界和平)
2.支持不同的屏幕尺寸,大小,分辨率
3.支持不同的系统版本(有的API在高版本可以使用,低版本不可以使用,或者已经过时,此时就得考虑到兼容性)。
下面就从这三个方面一一细说吧。
支持不同的语言
首先,其实如果你所开发的app只在天朝使用的话,可以不必考虑这方面的问题,因为天朝人都看得懂中文,你只需要用中文就ok了,但是如果你的APP是要冲出中国,冲出亚洲,走向世界的话,那你就要支持不同的语言了,否则到时候小日本的用户看到天朝的文字,以他们的智商,怎么能读懂呢,对吧。
为了使我们的APP能够,支持不同的语言,我们需要在我们的应用程序中增加额外的value文件夹。看下面
根据不同的地域,编写不同的values文件夹。例如下面的
English (default locale),
不同的语言之后,我们就可以再应用程序之中使用了。
支持不同屏幕(大小和密度)
Android设备的分类不同主要由于两个属性:设备大小和密度。我们应该祈祷我们我们的引用能够在不同大小的屏幕或者密度上使用。Android主要将我们的屏幕分为四种small,normal,large,xlarge。不同的密度分为四种 low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)。我们应该申明不同的layout布局文件和不同的bitmap,并放在不同的文件夹中,来适应不同的设备大小和密度。就像我们上面所说适应不同的语言一样。有的时候屏幕的方向也是我们APP考虑的问题,有时候也需要为不同的屏幕方向单独写一套布局文件或者准备一套图片。和上面的支持不同的语言类似,将布局文件放在不同的layout文件夹下面
对于支持不同屏幕,必须搞清楚一下几个概念
屏幕尺寸:屏幕的对角线的长度,单位英寸 1英寸约等于2.54cm
屏幕分辨率:横纵方向上的像素点数,单位是px,1px=1个像素点,一般以纵向的像素*横向像素,例如1920*1080
屏幕像素密度:每英寸的像素点数,单位dpi(dot per inch),屏幕像素密度于屏幕尺寸和屏幕分辨率有关,一般指对角线上的每英寸的像素点数例如Nexus5 ,屏幕4.95英寸,分辨率为1920*1080,他的dpi=445
,他的计算方式是1920*1920+1080*1080之后开方再除以4.95约等于445。
PX:构成图像的最小单位
dp,dip:Density Independent Pixels的缩写,即密度无关像素,以160dpi(屏幕像素密度)为基准,1dp=1px
Sp即Scale-Independent Pixels,可以根据文字大小首选项进行缩放,字体的单位
不同的像素密度进行区分
支持各种屏幕尺寸
1,使用wrap_content,match_parent,weight.在布局文件中尽量不适用具体的数字,可以再dimen文件中引用。
2,使用相对布局,禁用绝对布局
3,使用限定符
4,使用自动拉伸位图(.9图片)
5,可以使用Fragment来支持手机和平板。(其实就是准备不同的布局文件了)
给我们开发的APP,准备多套bitmap文件。以适应不同的屏幕密度。
在设计图标时,对于五种主流的像素密度(MDPI、HDPI、XHDPI、XXHDPI 和 XXXHDPI)应按照 2:3:4:6:8
的比例进行缩放。例如,一个启动图标的尺寸为48x48 dp,这表示在 MDPI 的屏幕上其实际尺寸应为 48x48 px,在 HDPI 的屏幕上其实际大小是 MDPI 的 1.5 倍 (72x72 px),在 XDPI 的屏幕上其实际大小是
MDPI 的 2 倍 (96x96 px),依此类推。
支持不同的系统版本
由于移动互联网发展的速度非常快,移动设备的更新换代速度也非常快,这些移动设备也越来越能干满足人们日常的生活需要了。这样正造就了我们移动开发人员的困扰,由于有些人可能用的是最新的手机,有的人可能用的还是低版本的手机,但是这些低版本的手机用户我们又不能忽略,因此,我们开发的app,必须在我们大部分的用户的手机上能够正常使用和适配。
首先,明确我们的应用的api版本。指定最低版本和目标版本。这样可以适应大部分用户版本,但是也有一些特殊情况。<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
...
</manifest> 其次,可以再运行的时候,检测当前系统的运行版本,或者运用第三方的开源库,适用不同版本的api。例如在使用ActionBar的时候,可以再运行时候检测系统版本
为了使我们的引用能够满足不同用户的不同设备的需求,可以从三个方面去考虑:
1.支持不同的语言(主要是为了世界和平)
2.支持不同的屏幕尺寸,大小,分辨率
3.支持不同的系统版本(有的API在高版本可以使用,低版本不可以使用,或者已经过时,此时就得考虑到兼容性)。
下面就从这三个方面一一细说吧。
支持不同的语言
首先,其实如果你所开发的app只在天朝使用的话,可以不必考虑这方面的问题,因为天朝人都看得懂中文,你只需要用中文就ok了,但是如果你的APP是要冲出中国,冲出亚洲,走向世界的话,那你就要支持不同的语言了,否则到时候小日本的用户看到天朝的文字,以他们的智商,怎么能读懂呢,对吧。
为了使我们的APP能够,支持不同的语言,我们需要在我们的应用程序中增加额外的value文件夹。看下面
根据不同的地域,编写不同的values文件夹。例如下面的
English (default locale),
/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>Spanish,
/values-es/strings.xml:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="title">Mi Aplicación</string> <string name="hello_world">Hola Mundo!</string> </resources>French,
/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>编写不同国家
不同的语言之后,我们就可以再应用程序之中使用了。
// 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);系统会自动根据地域(Locale)不同去识别不同的values文件夹下面的String.xml文件。这样假如你的APP在美国人手里使用,他就会变成英语了。
支持不同屏幕(大小和密度)
Android设备的分类不同主要由于两个属性:设备大小和密度。我们应该祈祷我们我们的引用能够在不同大小的屏幕或者密度上使用。Android主要将我们的屏幕分为四种small,normal,large,xlarge。不同的密度分为四种 low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)。我们应该申明不同的layout布局文件和不同的bitmap,并放在不同的文件夹中,来适应不同的设备大小和密度。就像我们上面所说适应不同的语言一样。有的时候屏幕的方向也是我们APP考虑的问题,有时候也需要为不同的屏幕方向单独写一套布局文件或者准备一套图片。和上面的支持不同的语言类似,将布局文件放在不同的layout文件夹下面
对于支持不同屏幕,必须搞清楚一下几个概念
屏幕尺寸:屏幕的对角线的长度,单位英寸 1英寸约等于2.54cm
屏幕分辨率:横纵方向上的像素点数,单位是px,1px=1个像素点,一般以纵向的像素*横向像素,例如1920*1080
屏幕像素密度:每英寸的像素点数,单位dpi(dot per inch),屏幕像素密度于屏幕尺寸和屏幕分辨率有关,一般指对角线上的每英寸的像素点数例如Nexus5 ,屏幕4.95英寸,分辨率为1920*1080,他的dpi=445
,他的计算方式是1920*1920+1080*1080之后开方再除以4.95约等于445。
PX:构成图像的最小单位
dp,dip:Density Independent Pixels的缩写,即密度无关像素,以160dpi(屏幕像素密度)为基准,1dp=1px
Sp即Scale-Independent Pixels,可以根据文字大小首选项进行缩放,字体的单位
不同的像素密度进行区分
支持各种屏幕尺寸
1,使用wrap_content,match_parent,weight.在布局文件中尽量不适用具体的数字,可以再dimen文件中引用。
2,使用相对布局,禁用绝对布局
3,使用限定符
4,使用自动拉伸位图(.9图片)
5,可以使用Fragment来支持手机和平板。(其实就是准备不同的布局文件了)
给我们开发的APP,准备多套bitmap文件。以适应不同的屏幕密度。
在设计图标时,对于五种主流的像素密度(MDPI、HDPI、XHDPI、XXHDPI 和 XXXHDPI)应按照 2:3:4:6:8
的比例进行缩放。例如,一个启动图标的尺寸为48x48 dp,这表示在 MDPI 的屏幕上其实际尺寸应为 48x48 px,在 HDPI 的屏幕上其实际大小是 MDPI 的 1.5 倍 (72x72 px),在 XDPI 的屏幕上其实际大小是
MDPI 的 2 倍 (96x96 px),依此类推。
支持不同的系统版本
由于移动互联网发展的速度非常快,移动设备的更新换代速度也非常快,这些移动设备也越来越能干满足人们日常的生活需要了。这样正造就了我们移动开发人员的困扰,由于有些人可能用的是最新的手机,有的人可能用的还是低版本的手机,但是这些低版本的手机用户我们又不能忽略,因此,我们开发的app,必须在我们大部分的用户的手机上能够正常使用和适配。
首先,明确我们的应用的api版本。指定最低版本和目标版本。这样可以适应大部分用户版本,但是也有一些特殊情况。<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
...
</manifest> 其次,可以再运行的时候,检测当前系统的运行版本,或者运用第三方的开源库,适用不同版本的api。例如在使用ActionBar的时候,可以再运行时候检测系统版本
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); } }还有,在使用属性动画的时候,在高版本的某些api在低版本可能有些不适用,这个时候就出现了开源的nineoldandroids。使得在所有的api上可以通用属性动画的的一些方法。
相关文章推荐
- WebSocket学习笔记–IE,IOS,Android等设备的兼容性问题与代码实现
- Android 系列 1.10通过兼容性库在旧设备上使用新功能
- WebSocket 学习笔记--IE,IOS,Android等设备的兼容性问题与代码实现
- android学习记录(十二)android设备兼容性
- Web开发兼容性系列文章(一):不同设备浏览器的userAgent值大全
- Web开发兼容性系列文章(二):根据userAgent值的特性判断客户端设备及浏览器类型
- Android学习系列(一)Activities
- Android学习系列(7)--App轮询服务器消息
- Linux设备驱动程序学习系列~~
- Android学习系列(4)--App自适应draw9patch不失真背景
- Android学习系列(19)--App离线下载
- 《Android Dev Guide》系列教程17:建立自定义组件
- android 图形系统加速学习系列 (一)
- 从Delphi转向VC系列学习二:Windows的图形设备接口及Windows绘图
- Android学习系列(5)--App布局初探之简单模型
- Android学习系列(20)--App数据格式之解析Json
- Android学习系列(4)--App自适应draw9patch不失真背景(我见过最全的)
- 【Android开发学习系列】(1)——Windows下Android开发环境配置
- 《Android Dev Guide》系列教程
- Android学习系列(4)--App自适应draw9patch不失真背景