Android短视频系统开发,多语言切换功能的实现

随着短视频系统开发的不断升级,目标用户群体肯定不会局限于国内,而发展至海外就要做好语言切换功能的实现,接下来让我们一起来了解一下吧。

1. 实现的效果

在短视频系统开发设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成,下次重新打开 App ,也是用户设置的语言。

2. 实现步骤

  1. 添加多语言文件
    在不同的 value 文件夹下(例如 value 、value-en、values-zh-rTW 文件夹)添加不同语言的 string.xml 文件,我们的项目添加了英文、简体中文、繁体中文三种语言。

  2. 更新 Configuration 中的 locale 属性
    参照 Android 开发者官网 上 的描述,Configuration 包含了设备的所有的配置信息,这些配置信息会影响应用获取的资源。例如 string 资源,就是根据 Configuration 的 locale 属性来判断该取哪种语言的 string 资源,默认是 value 文件夹下的。

主要代码如下:

Resources resources = getContext().getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
// 应用用户选择语言
config.locale = Locale.ENGLISH;
resources.updateConfiguration(config, dm);

我们用了 Locale 中的预设值 Locale.ENGLISH、Locale.TRADITIONAL_CHINESE和 Locale.SIMPLIFIED_CHINESE,如果你需要设置的语言没有预设值,你可以自己新建一个 Locale 对象,具体自行 Google 吧。

注:跟随系统设置是 Locale.getDefault()

  1. 重启 HomeActivity
    我 们的短视频系统开发有个启动页 WelcomeActivity,如果从欢迎页重启,并不是一个好的体验,应该和微信的语言设置一样,直接回到 HomeActivity ,而不是从 WelcomeActivity 重新打开。实现其实也很简单,代码如下:
 Intent intent = new Intent(this, HomeActivity.class);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
 getActivity().startActivity(intent);

正常来说这段代码应该是没问题的,但是假如短视频系统开发存在某个 activity 和当前设置页 activity 不在一个 task 栈内的话(比如你从某个通知页用 FLAG_ACTIVITY_NEW_TASK 启动的一个 activity),就不会应用语言设置。因此可以直接杀掉当前短视频系统的进程,保证是“整个”重启了:

Intent intent = new Intent(this, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
// 杀掉进程
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);

按道理杀掉进程的两行代码任意一行即可。

我认为最好是切完语言立即刷新然后还是停留当前页比较好。具体实现如下:

1、还是要添加多语言文件,跟上面的步骤1一样;

2、在BaseActivity中实现语言切换代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EventBus.getDefault().register(this);
        changeAppLanguage();
    }
public void changeAppLanguage() {
        String sta = Store.getLanuageIsChinese() ? "zh" : "en";//这是SharedPreferences工具类,用于保存设置,代码很简单,自己实现吧
        // 本地语言设置
        Locale myLocale = new Locale(sta);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        res.updateConfiguration(conf, dm);
    }
public void onEvent(String str) {
        switch (str) {
            case Constant.EVENT_REFRESH_LANGUAGE:
                changeAppLanguage();
                recreate();//刷新界面
                break;
        }
    }
@Override
    protected void onDestroy() {
        super.onDestroy();
       EventBus.getDefault().unregister(this);
    }

3、短视频系统开发设置界面中的实现自然就是更新sharedPreferences 中的设置,然后发送EventBus就行啦

if () {//中文
            Store.setLanuageIsChinese(true);
        } else if () {//英文
            Store.setLanuageIsChinese(false);
        }
        EventBus.getDefault().post(Constant.EVENT_REFRESH_LANGUAGE);

Android短视频系统开发,多语言切换功能的实现基本思路就是这样,希望对大家有帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值