android studio----设备兼容

一.配置不同语言

  设置不同的语言可以简单通过工程的资源目录来轻松实现这一功能。

  为设置多国语言,可以在res/下创建额外的values目录(以连字符和ISO国家代码结尾命名),比如values-es/是为语言代码为"es"的区域设置的简单的资源文件的目录。然后再values目录下创建strings文件,将不同语言对应的字符串输入到相应的文件。

如: 
res/
   values/                   
       strings.xml
  values-ko/                ------韩语
    strings.xml          
  values-fr/             ------法语
    strings.xml
  values-es                 ------西班牙语
    strings.xml  

新建后如图:

  

  然后再对应的strings文件中填入对应语言的字符串。

韩语(values-ko/strings.xml):
        <string name="title">운용</string>
        <string name="hello_world">안녕</string>
法语(values-fr/strings.xml):
        <string name="title">Mon Application</string>
        <string name="hello_world">Bonjour le monde !</string>
西班牙语(values-es/strings.xml):
        <string name="title">Mi Aplicación</string>
        <string name="hello_world">Hola Mundo!</string>

   在手机中设置系统语言,app中对应字符显示就会显示对应语言的字符串。 

二.配置不同屏幕

补充知识:

  • 4种普遍尺寸:小(small),普通(normal),大(large),超大(xlarge)
  • 4种普遍分辨率:低精度(ldpi), 中精度(mdpi), 高精度(hdpi), 超高精度(xhdpi)
  • 横屏(land),默认为竖屏。

1.不同的layout:

  与不同语言配置相似,在res新建资源目录(目录以layout-<screen_size>为后缀命名),例如:

res/layout-large/。然后再不同目录下创建命名相同的布局,根据屏幕自定义布局。

例如:

 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 

2.不同的bitmap:

  实现过程类似layout,我们为4种普遍分辨率:低,中,高,超高精度,提供相对应的bitmap资源。使得有更好的画质。

  四种分辨率生成密度如下:

  • xhdpi: 2.0
  • hdpi: 1.5
  • mdpi: 1.0 (基准)
  • ldpi: 0.75

三.配置不同系统版本

  在Manifest.xml文件(build.gradle中)中描述支持的版本。具体来说,<uses-sdk>元素中的minSdkVersiontargetSdkVersion 属性,标明在设计和测试app时,最低兼容API的级别和最高适用的API级别。 

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

在build.gradle中:
 android {
    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 25
    ...  
    }
}

运行时检测系统版本:

  在运行可能会不兼容的程序时,利用Build常量中供了对每一个版本的唯一代号,在我们的app中使用这些代号可以建立条件,保证依赖于高级别的API的代码,只会在这些API在当前系统中可用时,才会执行。

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

  

  

posted @ 2017-08-17 14:46  sloth_ccc  阅读(562)  评论(0编辑  收藏  举报