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>
元素中的minSdkVersion
和targetSdkVersion
属性,标明在设计和测试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); } }