Android适配不同语言、屏幕,提高兼容性

一、语言适配

MyProject/
    res/
       values/          // 默认
           strings.xml
       values-es/       // 适配西班牙语
           strings.xml
       values-fr/       // 适配法语
           strings.xml

二、屏幕适配

调整布局以适配不同的屏幕大小:

MyProject/
    res/
        layout/               // 普通屏幕
            main.xml
        layout-land/          // 横向屏幕
            main.xml
        layout-large/         // 大屏幕
            main.xml
        layout-large-land/    // 横向大屏幕
            main.xml
        layout-xlarge/        // 超大屏幕
            main.xml
        layout-xlarge-land/   // 横向超大屏幕
            main.xml

调整资源以适配不同的屏幕精度:

MyProject/
    res/                       // 尺寸比例:
        drawable-xxhdpi/       // 3.0
            awesomeimage.png
        drawable-xhdpi/        // 2.0
            awesomeimage.png
        drawable-hdpi/         // 1.5
            awesomeimage.png
        drawable-mdpi/         // 1.0(基准)
            awesomeimage.png
        drawable-ldpi/         // 0.75,可省略,系统会从hdpi按比例缩小一半
            awesomeimage.png

三、提高兼容性

设备特性的兼容。假如APP中需要用到罗盘传感器,并且它不是核心功能所必需,则可在AndroidManifest.XML中定义如下:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
    <!-- 若设为true,则没有罗盘传感器的设备将无法安装此APP -->
                  android:required="false" />
    ...
</manifest>

在代码中判断是否要提供相关功能:

PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device does not have a compass, turn off the compass feature
    disableCompassFeature();
}

平台版本的兼容。假设APP的核心功能是基于Android 4.0(SDK版本14)的Calendar Provider来实现的,则可定义最低支持的版本如下:

<manifest ... >
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
    ...
</manifest>

如果基于新版本API制作了某些非核心功能,而APP最低支持的版本又无法运行它们,可在代码中如此设置:

// 如果系统SDK版本低于xxx版本
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.xxx) {  
    disableNewFeature();
}

另外,targetSdkVersion的设置会影响到APP的权限和某些系统特性。假如Android推出新增某些权限的新版本,而targetSdkVersion又设得比该版本低的话,在新版本的Android设备里会赋予旧版APP所有的新权限,并且在Google Play会显示APP需要这些权限。新版本在更新某些系统特性的同时,也会保留旧版本的特性。targetSdkVersion为旧版的APP将使用旧版的系统特性。

参考资料:

Android Training > Supporting Different Devices
https://developer.android.com/intl/zh-cn/training/basics/supporting-devices/index.html

Android API Guides > Device Compatibility
https://developer.android.com/intl/zh-cn/guide/practices/compatibility.html#defined

Android API Guides > System Permissions
https://developer.android.com/intl/zh-cn/guide/topics/security/permissions.html

你可能感兴趣的:(android,屏幕适配,语言适配)