resource
-
是否支持rtl 从右到左布局方式
在清单文件中配置
<application
android:supportsRtl="true"> -
设置组件xml属性
android:layoutDirection="ltr"强制设置布局方法 -
在api17以上使用带有end或start的属性替换带有left或reght的属性 例:android:layout_marginEnd="15dp"
-
使用不同的限定符名称,提供不同的资源文件
配置限定符<a href='https://developer.android.com/guide/topics/resources/providing-resources.html'>完整列表</a>(需要科学上网)
配置 | 示例 | 说明 |
---|---|---|
MCC和MNC | mcc310 | 移动国家代码 |
语言和区域 | en | 语言通过由两个字母组成的<a href='http://www.loc.gov/standards/iso639-2/php/code_list.php'>ISO 639-1</a>语言代码定义 |
布局方向 | ldrtl</br>ldltr | ldltr是默认值,要为应用启用从右到左的布局功能,必须将 supportsRtl 设置为 "true",并将 targetSdkVersion 设置为 17 或更高版本 |
- 命名规则
- 您可以为单组资源指定多个限定符,并使用短划线分隔。例如,drawable-en-rUS-land 适用于横排美国英语设备。
- 限定符出现的顺序必须遵循表中列出的顺序
- 不能嵌套备用资源目录。例如,您不能拥有 res/drawable/drawable-en/
- 值不区分大小写
- 对于每种限定符类型,仅支持一个值
处理配置变更##
- 当配置变更时会调用这个方法 onConfigurationChanged(Configuration newConfig)</br>
通过newConfig.getLayoutDirection()获取布局方向:</br>
<pre>public int getLayoutDirection() {
return (screenLayout&SCREENLAYOUT_LAYOUTDIR_MASK) == SCREENLAYOUT_LAYOUTDIR_RTL
? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR;
}</pre> - 强制设置配置</br>
<pre>private void resetLocal() {
Configuration config = getResources().getConfiguration();
Locale locale = App.appLocale();
Locale.setDefault(locale);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
config.setLocale(locale);
config.setLayoutDirection(locale);
} else {
config.locale = locale;
}
getResources().updateConfiguration(config, getResources().getDisplayMetrics());}</pre>
getResources().updateConfiguration()方法在17版本以后过时,替换为下面的方法
<pre>ContextWrapper public Context createConfigurationContext (Configuration overrideConfiguration
</pre>
关于时区##
- 获取当地时间 Locale.CHINA表示使用地区文字样式,setTimeZone获取哪个时区的时间
<pre>public static String timeFormat(long time, String locale) {
DateFormat dateFormat1 = new SimpleDateFormat("HH:mm dd-MM-yyyy", Locale.CHINA);
dateFormat1.setTimeZone(TimeZone.getTimeZone("GMT+3"));
//dateFormat.setTimeZone(TimeZone.getTimeZone(locale));
return dateFormat1.format(time);
}
</pre>
关于字符串的格式化##
- 字符串的格式化</br>
可以使用有两个参数的format方法
<pre>public static String format(Locale l, String format, Object... args) {
return new Formatter(l).format(format, args).toString();
}
</pre> - TextView中设置显示的语言 防止例如在阿拉伯语环境下,数字会以阿拉伯语的方式展示
<pre>if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
textView.setTextLocale(Locale.ENGLISH);
}
</pre>
网友评论