[8.3.0] 司乘屏国际化自动修改功能,暂时未完成,因为乘客屏与当前国家化功能dpi存在冲突,会导致乘客屏UI大小错乱,暂时无法解决
This commit is contained in:
@@ -18,6 +18,7 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.BaseAdapter
|
||||
import android.widget.RadioGroup
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.appcompat.widget.ListPopupWindow
|
||||
@@ -36,6 +37,7 @@ import com.mogo.commons.constants.SharedPrefsConstants
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.commons.module.status.MogoStatusManager
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.commons.utils.LocaleHelper
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
@@ -161,6 +163,9 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.btnEnsureMap
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.btnFmd
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.btnHdVisualAdjust
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.btnIpcReboot
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.btnLanguageChinese
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.btnLanguageEnglish
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.btnLanguageFollowSystem
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.btnPassengerReboot
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.btnPointCloudColor
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.btnPointCloudSize
|
||||
@@ -217,6 +222,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.etThreshold
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.exportAllLogs
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.hdMapControllerLayout
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.hmiControllerLayout
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.layoutLanguage
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.logLoadingView
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.logcatCenterLayout
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.obuConnectStatusTv
|
||||
@@ -224,6 +230,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.obuControllerLayou
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.reportMsgLayout
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.reset_changesight
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.rgGpsProvider
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.rgLanguage
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.statusCenterLayout
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.swDevelopMode
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbADASLog
|
||||
@@ -252,6 +259,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.tbIsDrawPath
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbIsDrawUnknownIdentifyData
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbIsRainMode
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbIsStrictMode
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLanguage
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLogCatch
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLogcatCenter
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbNetLog
|
||||
@@ -859,6 +867,50 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
ActivityUtils.startActivity(AutopilotCheckAct::class.java)
|
||||
}
|
||||
|
||||
when (LocaleHelper.getLanguage(AbsMogoApplication.getApp())) {
|
||||
LocaleHelper.LANGUAGE_FOLLOW_SYSTEM -> {
|
||||
rgLanguage.check(R.id.btnLanguageFollowSystem)
|
||||
}
|
||||
|
||||
LocaleHelper.LANGUAGE_CHINESE -> {
|
||||
rgLanguage.check(R.id.btnLanguageChinese)
|
||||
}
|
||||
|
||||
LocaleHelper.LANGUAGE_ENGLISH -> {
|
||||
rgLanguage.check(R.id.btnLanguageEnglish)
|
||||
}
|
||||
|
||||
else -> {}
|
||||
}
|
||||
/**
|
||||
* 语言
|
||||
*/
|
||||
tbLanguage.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if (isChecked) {
|
||||
buttonView.setCompoundDrawables(null, null, iconDown, null)
|
||||
//展示调试中心
|
||||
layoutLanguage.visibility = View.VISIBLE
|
||||
} else {
|
||||
buttonView.setCompoundDrawables(null, null, iconRight, null)
|
||||
//隐藏日志中心
|
||||
layoutLanguage.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
rgLanguage.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { group, checkedId ->
|
||||
when (checkedId) {
|
||||
R.id.btnLanguageFollowSystem -> {
|
||||
LocaleHelper.setLocale(AbsMogoApplication.getApp(), LocaleHelper.LANGUAGE_FOLLOW_SYSTEM)
|
||||
}
|
||||
|
||||
R.id.btnLanguageChinese -> {
|
||||
LocaleHelper.setLocale(AbsMogoApplication.getApp(), LocaleHelper.LANGUAGE_CHINESE)
|
||||
}
|
||||
|
||||
R.id.btnLanguageEnglish -> {
|
||||
LocaleHelper.setLocale(AbsMogoApplication.getApp(), LocaleHelper.LANGUAGE_ENGLISH)
|
||||
}
|
||||
}
|
||||
})
|
||||
/**
|
||||
* 日志中心
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.mogo.eagle.core.function.main
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.net.Uri
|
||||
@@ -23,6 +24,7 @@ import com.mogo.commons.context.ContextHolderUtil
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.commons.module.status.MogoStatusManager
|
||||
import com.mogo.commons.mvp.MvpActivity
|
||||
import com.mogo.commons.utils.LocaleHelper
|
||||
import com.mogo.commons.utils.MogoAnalyticUtils
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant
|
||||
@@ -95,6 +97,11 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
|
||||
PermissionsDialogUtils.openAppDetails(this, StringUtils.getString(R.string.module_core_show_pop_window), REQUEST_CODE_DIALOG)
|
||||
}
|
||||
|
||||
// override fun attachBaseContext(newBase: Context) {
|
||||
// super.attachBaseContext(LocaleHelper.onAttach(newBase))
|
||||
// }
|
||||
|
||||
|
||||
// todo 优化 车聊聊
|
||||
private fun injectFloatView() {
|
||||
val decorView = this.window.decorView as? FrameLayout ?: return
|
||||
|
||||
@@ -233,6 +233,67 @@
|
||||
android:layout_height="1dp"
|
||||
android:background="#F0F0F0" />
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/tbLanguage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/dp_10"
|
||||
android:background="@drawable/radio_button_normal_background_right"
|
||||
android:drawableEnd="@drawable/icon_right"
|
||||
android:padding="@dimen/dp_20"
|
||||
android:textOff="语言"
|
||||
android:textOn="语言"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layoutLanguage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/dp_20"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/black"
|
||||
android:text="选中跟随系统时,在系统设置中修改系统语言后必须手动重启鹰眼才能够生效"
|
||||
android:textSize="@dimen/dp_22" />
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/rgLanguage"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
<RadioButton
|
||||
android:id="@+id/btnLanguageFollowSystem"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:padding="@dimen/dp_20"
|
||||
android:text="跟随系统"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/btnLanguageChinese"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:padding="@dimen/dp_20"
|
||||
android:text="简体中文"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/btnLanguageEnglish"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:padding="@dimen/dp_20"
|
||||
android:text="English"
|
||||
android:textAllCaps="false"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
</RadioGroup>
|
||||
</LinearLayout>
|
||||
<ToggleButton
|
||||
android:id="@+id/tbIsStrictMode"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.commons.koom.KoomInitTask;
|
||||
import com.mogo.commons.screen.ScreenHelper;
|
||||
import com.mogo.commons.module.MogoServices;
|
||||
import com.mogo.commons.utils.LocaleHelper;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipDrawable;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
|
||||
@@ -59,6 +60,10 @@ public abstract class AbsMogoApplication extends Application {
|
||||
MogoServices.getInstance().init(this);
|
||||
}
|
||||
|
||||
// @Override
|
||||
// protected void attachBaseContext(Context base) {
|
||||
// super.attachBaseContext(LocaleHelper.onAttach(base));
|
||||
// }
|
||||
private void initRxJavaErrorHandler() {
|
||||
RxJavaPlugins.setErrorHandler(throwable -> {
|
||||
CallerLogger.e("RxJava", "" + throwable);
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.mogo.commons.utils;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class LocaleHelper {
|
||||
public static final String KEY_APP_LANGUAGE = "app_language";
|
||||
|
||||
// 语言代码常量
|
||||
public static final String LANGUAGE_FOLLOW_SYSTEM = "auto";
|
||||
public static final String LANGUAGE_CHINESE = "zh";
|
||||
public static final String LANGUAGE_ENGLISH = "en";
|
||||
|
||||
// 在 Application 和 BaseActivity 的 attachBaseContext 中调用
|
||||
public static Context onAttach(Context context) {
|
||||
String lang = getPersistedData(context, LANGUAGE_FOLLOW_SYSTEM);
|
||||
return setLocale(context, lang);
|
||||
}
|
||||
|
||||
public static String getLanguage(Context context) {
|
||||
return getPersistedData(context, LANGUAGE_FOLLOW_SYSTEM);
|
||||
}
|
||||
|
||||
// 保存并设置语言
|
||||
public static Context setLocale(Context context, String language) {
|
||||
persist(context, language);
|
||||
|
||||
if (LANGUAGE_FOLLOW_SYSTEM.equals(language)) {
|
||||
// 如果是跟随系统,获取系统当前的 Locale
|
||||
Locale systemLocale;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
systemLocale = Resources.getSystem().getConfiguration().getLocales().get(0);
|
||||
} else {
|
||||
systemLocale = Resources.getSystem().getConfiguration().locale;
|
||||
}
|
||||
return updateResources(context, systemLocale);
|
||||
}
|
||||
|
||||
return updateResources(context, new Locale(language));
|
||||
}
|
||||
|
||||
private static String getPersistedData(Context context, String defaultLanguage) {
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
return preferences.getString(KEY_APP_LANGUAGE, defaultLanguage);
|
||||
}
|
||||
|
||||
private static void persist(Context context, String language) {
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
preferences.edit().putString(KEY_APP_LANGUAGE, language).apply();
|
||||
}
|
||||
|
||||
// 核心适配逻辑:兼容 Android N (7.0) 及以上
|
||||
@TargetApi(Build.VERSION_CODES.N)
|
||||
private static Context updateResources(Context context, Locale locale) {
|
||||
Configuration configuration = context.getResources().getConfiguration();
|
||||
configuration.setLocale(locale);
|
||||
configuration.setLayoutDirection(locale); // 适配从右到左的语言(如阿拉伯语),虽然这里只是中英文
|
||||
// 创建包含新配置的 Context
|
||||
return context.createConfigurationContext(configuration);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user