android 语言的设置与获取
文章目录
- 前置条件
- 涉及到的关键类
- 类的使用
- 1、LocalePicker 的使用
- 2、LocaleHelper的使用
- 示例
- 代码
- 对应的 locale_test.xml
- 打印结果
提示:以下是本篇文章正文内容,下面案例可供参考
前置条件
一、需要系统权限,即在 AndroidManifest.xml 中加上 android:sharedUserId="android.uid.system"
二、需要导入 frameword.jar
涉及到的关键类
1、/fameworks/base/core/java/com/android/internal/app/LocaleStore.java
2、/fameworks/base/core/java/com/android/internal/app/LocaleHelper.java
3、/fameworks/base/core/java/com/android/internal/app/LocalePicker.java
类的使用
1、LocalePicker 的使用
a) 获取当前可选择语言列表
LocalePicker.getLocales()
b) 设置使用的语言列表,同时更新系统语言
语言列表设置为一个,
LocalePicker.updateLocale(Locale.CHINESE);
语言列表更新为这个
LocalePicker.updateLocales()
c) 获取所有内置的语言
LocalePicker.getAllAssetLocales()
2、LocaleHelper的使用
a) 获取语言的名称
LocaleHelper.getDisplayName(localeInfo.getLocale(), localeInfo.getLocale(), true))
LocaleHelper.getDisplayName(localeInfo.getLocale(), true)
示例
代码
public class LocaleTestActivity extends Activity {private static final String TAG = "LocaleTestActivity";@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);LocaleTestBinding binding = DataBindingUtil.setContentView(this, R.layout.locale_test);binding.getAllLanguage.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// LogUtils.d(TAG, Arrays.toString(.toArray(new LocalePicker.LocaleInfo[]{})));LogUtils.d(TAG, "获取所有的语言信息:" + get());LogUtils.d(TAG, "获取列表中的所有语言:" + LocalePicker.getLocales().toString());LogUtils.d(TAG, "获取系统语言信息:" + Arrays.toString(LocalePicker.getSystemAssetLocales()));LogUtils.d(TAG, "获取列表中指定语言所在的位置:" + LocalePicker.getLocales().indexOf(new Locale("zh")));LogUtils.d(TAG,"level__" + Arrays.toString(LocaleStore.getLevelLocales(LocaleTestActivity.this, new HashSet<String>(), null, false).toArray(new LocaleStore.LocaleInfo[]{})));LocalePicker.LocaleInfo localeInfo = LocalePicker.getAllAssetLocales(LocaleTestActivity.this, false).get(1);LocalePicker.updateLocale(localeInfo.getLocale());LogUtils.d(TAG, " 获取语言的名称(对应该语言的) getFullNameNative: " + LocaleHelper.getDisplayName(localeInfo.getLocale(), localeInfo.getLocale(), true));LogUtils.d(TAG, " 获取语言的名称(对应设置语言的) getFullNameInUiLanguage: " + LocaleHelper.getDisplayName(localeInfo.getLocale(), true));}});binding.setChinese.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {LocalePicker.updateLocale(Locale.CHINESE);}});binding.setEnglish.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {LocalePicker.updateLocale(Locale.UK);}});}private String get(){StringBuilder builder = new StringBuilder();for(LocalePicker.LocaleInfo info : LocalePicker.getAllAssetLocales(LocaleTestActivity.this, false)){builder.append("label: " + info.getLabel() + " locale: " + info.getLocale().toString() + " tag: " + info.getLocale().toLanguageTag() + "\n");}return builder.toString();}
}
对应的 locale_test.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><data></data><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><androidx.appcompat.widget.AppCompatButtonandroid:id="@+id/get_all_language"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="获取设置的所有语言"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.019"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.038" /><androidx.appcompat.widget.AppCompatButtonandroid:id="@+id/set_chinese"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="设置为中文"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="@+id/get_all_language"app:layout_constraintHorizontal_bias="0.0"app:layout_constraintStart_toStartOf="@+id/get_all_language"app:layout_constraintTop_toBottomOf="@+id/set_english"app:layout_constraintVertical_bias="0.065" /><androidx.appcompat.widget.AppCompatButtonandroid:id="@+id/set_english"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="设置为英文"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="@+id/get_all_language"app:layout_constraintHorizontal_bias="0.0"app:layout_constraintStart_toStartOf="@+id/get_all_language"app:layout_constraintTop_toBottomOf="@+id/get_all_language"app:layout_constraintVertical_bias="0.042" /></androidx.constraintlayout.widget.ConstraintLayout>
</layout>
打印结果
android 语言的设置与获取相关推荐
- Android 语言环境设置Locale的设置
原创文章,如有转载,请注明出处:http://blog.csdn.net/myth13141314/article/details/70224168 开发过程中需要将App的语言环境设置为英语,记录如 ...
- Android应用内设置多语言,可随系统语言改变而改变,也可设置app为固定语言不受系统语言影响
转载请标明出处: https://blog.csdn.net/m0_38074457/article/details/84993366,本文出自:[陈少华的博客] 一.效果图 https://gith ...
- Android应用内设置多语言
1.项目简介 最近项目中要加入多语言需求,涉及到的有中文简体,中文繁体,英语,西班牙语,泰语,印尼语,葡萄牙语.参考了Android应用内设置多语言,可随系统语言改变而改变,在此基础上做了修改,选择为 ...
- R语言attributes函数(获取属性、设置属性)、attr函数(改变一个属性)、structure函数(改变数据形状)实战
R语言attributes函数(获取属性.设置属性).attr函数(改变一个属性).structure函数(改变数据形状)实战 目录
- 【Android FFMPEG 开发】FFMPEG 获取编解码器 ( 获取编解码参数 | 查找编解码器 | 获取编解码器上下文 | 设置上下文参数 | 打开编解码器 )
文章目录 博客简介 . FFMPEG 编解码器获取流程 I . FFMPEG 获取音视频流的编解码参数 AVCodecParameters *codecpar II . FFMPEG 查找解码器 av ...
- Android系统语言默认设置为简体中文
Android系统默认的语言是英语,但是对于中国大陆Android产品厂商来说,不会出厂之后语言还是英语,到用户手里之后,用户自己设置成简体中文吧?有如果客户不懂英语,岂不是就不能设置系统语言了 ...
- 海康机器人工业相机常用参数功能设置与获取(持续更新全-C语言)
海康机器人工业相机常用参数功能设置与获取(C语言) 前言 相机属性树 1.设备控制/DeviceControl 1.1相机序列号获取/DeviceSerialNumber 1.2相机自定义命名设置与获 ...
- Android屏幕待机时间的获取和设置
博客源址: Android屏幕待机时间的获取和设置 应用场景:紧接的是Adnroid屏幕亮度调节--设置到指定的值与恢复到原来的值这一篇的应用场景,条形码图片扫码的问题.屏幕待机时间太短,正在扫着突然 ...
- android语言列表+波斯,Android 多语言入门及实战
右键res,选择 New Resource Directory ,选择 locale ,选择自己想要适配的语言类型 设置应用内多语言 Android 7.0以下 /** * 设置多语言 */ publ ...
最新文章
- java字符存储_用java的类集框架做一个字符存储器(15)
- 25个别出心裁的简历设计作品欣赏
- [Android]为指定的应用创建桌面快捷方式
- 一个亿的融资在一家芯片初创公司可以烧多久?
- 【AtCoder】AGC017
- 华为手机设置页面黑色_华为手机里最危险的设置,学会这一招,手机还能再战三年...
- 服务器客户端对话java_java中的服务器和客户机如何使用
- 敏捷开发系列学习总结(16)——给Scrum Master的十个建议
- linux startx无法启动
- 编写python代码估算sin(x)的值
- 2. mac mysql error
- paip.提升安全性----Des加密 java php python的实现总结
- 计算机网络技术基础第二章答案,计算机网络技术基础各章节综合练习题及答案...
- 实物补贴和货币补贴的权衡
- kafka内存缓冲池机制造成的频繁GC问题
- 串口、COM口、UART口, TTL、RS-232、RS-485的区别
- linux 动态扫描 数码管,七段数码管动态扫描原理及其实现方法
- 大三寒假实习了半个月很困惑
- RandomAccessFile类 随机流
- 暴力破解Windows、Linux登录密码