Android

设置界面风格

更新时间: 2025/11/18 16:11:54

本文档详细介绍如何对网易云信 Android UIKit 进行全局配置,包括语言切换与主题风格设置,帮助您打造符合产品需求的即时通讯界面。

语言切换

UIKit 支持多语言切换功能,可根据您的应用需求切换界面显示语言。Android 端通过设置 Activity 和 Application 的 context 实现语言自主切换。

支持的语言

  • 中文:Locale.CHINA
  • 英文:Locale.ENGLISH
  • 其他:可通过添加其他的语言资源支持(如 values-es 等)

在 Application 的 OnCreate 回调中设置语言。切换语言时进行持久化设置,并发出通知。在其他页面中会接收到语言切换的通知,建议通过 recreate() 方法重建当前 Activity,以确保所有界面元素正确应用新语言设置。

  • 方法原型:

    JavaAppLanguageConfig.getInstance().setAppLanguage(IMKitClient.getApplicationContext(), currentLanguage);
    
  • 示例代码:

    JavaString localeStr = AppLanguageConfig.getInstance().getAppLanguage(this);
    IMKitClient.init(this, options, new Locale(localeStr));
    
    AppLanguageConfig.getInstance()
        .setAppLanguage(IMKitClient.getApplicationContext(), currentLanguage);
    EventCenter.notifyEvent(new MultiLanguageUtils.LangEvent());
    
    //语言变更事件,切换语言后重新加载页面
    EventNotify<MultiLanguageUtils.LangEvent> langeNotify =
        new EventNotify<MultiLanguageUtils.LangEvent>() {
        @Override
        public void onNotify(@NonNull MultiLanguageUtils.LangEvent message) {
            recreate();
        }
    
        @NonNull
        @Override
        public String getEventType() {
            return "langEvent";
        }
        };
    
  • 效果预览:

    中文 切换后(英文)

主题切换

网易云信 IM UIKit 提供两套风格的 UI 组件库,您可以根据产品设计需求切换合适的主题风格。

支持的主题

  • 协同版 UI(normal):默认主题风格,适合企业协作场景。
  • 通用版 UI(fun):更适合社交娱乐场景的主题风格。

在路由跳转时注册对应主题的路由,实现主题的切换。

  • 方法原型:

    Javapublic static void setTheme(Context context, @YunxinUIKit.Theme int theme)
    
  • 示例代码:

Javapublic ChatService create(@NonNull Context context) {
    // 协同版路由,如果使用通用版本则删除该部分。
    XKitRouter.registerRouter(RouterConstant.PATH_CHAT_P2P_PAGE, ChatP2PActivity.class);
    XKitRouter.registerRouter(RouterConstant.PATH_CHAT_TEAM_PAGE, ChatTeamActivity.class);
    XKitRouter.registerRouter(RouterConstant.PATH_CHAT_SEARCH_PAGE, ChatSearchActivity.class);
    XKitRouter.registerRouter(RouterConstant.PATH_CHAT_LOCATION_PAGE, LocationPageActivity.class);
    XKitRouter.registerRouter(RouterConstant.PATH_CHAT_PIN_PAGE, ChatPinActivity.class);
    XKitRouter.registerRouter(RouterConstant.PATH_CHAT_SETTING_PAGE, ChatSettingActivity.class);
    XKitRouter.registerRouter(RouterConstant.PATH_CHAT_ACK_PAGE, ChatReaderActivity.class);
    //协同版路由结束

    // 通用版路由,如果使用协同版本则删除该部分。
    XKitRouter.registerRouter(RouterConstant.PATH_FUN_CHAT_P2P_PAGE, FunChatP2PActivity.class);
    XKitRouter.registerRouter(RouterConstant.PATH_FUN_CHAT_TEAM_PAGE, FunChatTeamActivity.class);
    XKitRouter.registerRouter(
        RouterConstant.PATH_FUN_CHAT_SEARCH_PAGE, FunChatSearchActivity.class);
    XKitRouter.registerRouter(RouterConstant.PATH_CHAT_LOCATION_PAGE, LocationPageActivity.class);
    XKitRouter.registerRouter(RouterConstant.PATH_FUN_CHAT_PIN_PAGE, FunChatPinActivity.class);
    XKitRouter.registerRouter(
        RouterConstant.PATH_FUN_CHAT_READER_PAGE, FunChatReaderActivity.class);
    XKitRouter.registerRouter(
        RouterConstant.PATH_FUN_CHAT_SETTING_PAGE, FunChatSettingActivity.class);
    //通用版路由结束

    //以下内容不可删除
    chatKitInit(context);
    registerSendTeamTips();
    registerAitNotifyTrigger();
    registerSendText();
    IMKitClient.registerInitService(new ChatUIInitService());
    return this;
}
  • 效果预览:

    通用版 切换后(协同版)
此文档是否对你有帮助?
有帮助
去反馈
  • 语言切换
  • 主题切换