Commit fe134c80 authored by wanglei's avatar wanglei

...多语言

parent 543554ec
......@@ -25,18 +25,7 @@
android:supportsRtl="true"
android:theme="@style/Theme.ScanQR"
tools:targetApi="31">
<activity
android:name=".ui.language.LanguageActivity"
android:exported="false" />
<activity
android:name=".ui.product.ProductCodeActivity"
android:exported="false" />
<activity
android:name=".ui.website.WebsiteCodeActivity"
android:exported="false" />
<activity
android:name=".ui.website.WebsiteActivity"
android:exported="false" />
<activity
android:name=".ui.start.StartActivity"
android:exported="true"
......@@ -86,6 +75,26 @@
android:exported="false"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.language.LanguageActivity"
android:exported="false"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.product.ProductCodeActivity"
android:exported="false"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.website.WebsiteCodeActivity"
android:exported="false"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.website.WebsiteActivity"
android:exported="false"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<provider
android:name="androidx.core.content.FileProvider"
......
package com.base.scanqr.base
import android.app.Activity
import android.app.Dialog
import android.content.Context
import android.content.Intent
......@@ -93,8 +92,11 @@ abstract class BaseActivity<VB : ViewBinding>(
super.attachBaseContext(MultiLanguages.attach(newBase))
}
fun changeLanguage(currentActivity: Activity, bundle: Bundle = Bundle()): Boolean {
/**
* 使用时类的全局变量最好用可为空来定义,
* 避免重新创建activity,在onPause;onStop,onDestroy调用这些全局变量时空异常
*/
fun changeLanguage(): Boolean {
val spLanguage = Locale(appLanguageSp, appLanguageCountrySp)
val flag = currentLocale != spLanguage
val restart = MultiLanguages.setAppLanguage(this, spLanguage)
......@@ -123,8 +125,10 @@ abstract class BaseActivity<VB : ViewBinding>(
LogEx.logDebug(TAG, "changeLanguage recreate")
recreate()
} else {
startActivity(Intent(this, currentActivity::class.java).apply {
putExtras(bundle)
startActivity(Intent(this, this::class.java).apply {
val bundle = intent.extras
LogEx.logDebug(TAG, "changeLanguage bundle is null=${bundle == null}")
putExtras(bundle ?: Bundle())
})
overridePendingTransition(R.anim.activity_alpha_in, R.anim.activity_alpha_out)
finish()
......
......@@ -41,13 +41,4 @@ object ConstObject {
field = value
AppPreferences.getInstance().put("languageCountrySp", value, true)
}
var noShowFriendsShareGuide = false
get() {
return AppPreferences.getInstance().getBoolean("noShowFriendsShareGuide", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("noShowFriendsShareGuide", value, true)
}
}
\ No newline at end of file
......@@ -14,6 +14,12 @@ class EmailActivity : BaseActivity<ActivityEmailBinding>(ActivityEmailBinding::i
private val email = EmailUIBean()
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
......
......@@ -26,6 +26,13 @@ class EmailCodeActivity : BaseActivity<ActivityEmailCodeBinding>(ActivityEmailCo
private var email = EmailUIBean()
private var tempImage: String = ""
private var content: String = ""
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
......
package com.base.scanqr.ui.language
import android.content.Intent
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import com.base.scanqr.base.BaseActivity
import com.base.scanqr.bean.ConstObject.appLanguageCountrySp
import com.base.scanqr.bean.ConstObject.appLanguageSp
import com.base.scanqr.bean.LanguageBean
import com.base.scanqr.databinding.ActivityLanguageBinding
import com.base.scanqr.ui.main.MainActivity
import com.base.scanqr.utils.BarUtils
import com.base.scanqr.utils.LogEx
import com.gyf.immersionbar.ktx.immersionBar
import java.util.Locale
class LanguageActivity : BaseActivity<ActivityLanguageBinding>(ActivityLanguageBinding::inflate) {
private var isGuide: Boolean = false
private var adapter: LanguageAdapter? = null
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
isGuide = intent.extras?.getBoolean("isGuide") ?: isGuide
adapter = LanguageAdapter {
}
......@@ -27,10 +32,32 @@ class LanguageActivity : BaseActivity<ActivityLanguageBinding>(ActivityLanguageB
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
finishToMainTop()
}
binding.flQueren.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
binding.flQueren.setOnClickListener {
val selectLanguageBean = adapter?.items?.findLast { it.isSelect }
selectLanguageBean ?: return@setOnClickListener
LogEx.logDebug(TAG, "selectLanguageBean=$selectLanguageBean")
appLanguageSp = selectLanguageBean.language
appLanguageCountrySp = selectLanguageBean.country
if (isGuide) {
startActivity(Intent(this, MainActivity::class.java).apply {
// putExtra("isGuide", true)
})
}
finish()
}
}
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
initData()
}
......
......@@ -20,7 +20,7 @@ import com.gyf.immersionbar.ktx.immersionBar
class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate) {
private lateinit var navController: NavController
private var navController: NavController? = null
var cameraUtils: CameraUtils? = null
private val homeTabs by lazy {
......@@ -32,6 +32,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
)
}
override fun onResumeOneShoot() {
super.onResumeOneShoot()
changeLanguage()
}
override fun initView() {
super.initView()
......@@ -79,19 +83,19 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
private fun naviFragment(id: Int) {
when (id) {
0 -> {
navController.navigate(R.id.createFragment)
navController?.navigate(R.id.createFragment)
}
1 -> {
navController.navigate(R.id.scanFragment)
navController?.navigate(R.id.scanFragment)
}
2 -> {
navController.navigate(R.id.historyFragment)
navController?.navigate(R.id.historyFragment)
}
3 -> {
navController.navigate(R.id.settingsFragment)
navController?.navigate(R.id.settingsFragment)
}
}
}
......
......@@ -33,6 +33,11 @@ class ProductCodeActivity : BaseActivity<ActivityProductCodeBinding>(ActivityPro
private var productUIBean = ProductUIBean()
private var tempImage: String = ""
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
......
......@@ -7,6 +7,7 @@ import com.base.scanqr.base.BaseActivity
import com.base.scanqr.bean.ConstObject
import com.base.scanqr.bean.ConstObject.isFirstLauncher
import com.base.scanqr.databinding.ActivityStartBinding
import com.base.scanqr.ui.language.LanguageActivity
import com.base.scanqr.ui.main.MainActivity
import com.gyf.immersionbar.ktx.immersionBar
import kotlinx.coroutines.Dispatchers
......@@ -86,7 +87,8 @@ class StartActivity : BaseActivity<ActivityStartBinding>(ActivityStartBinding::i
}
private fun firstLauncherJump() {
startActivity(Intent(this, MainActivity::class.java).apply {
startActivity(Intent(this, LanguageActivity::class.java).apply {
putExtra("isGuide", true)
})
finish()
}
......
......@@ -13,6 +13,12 @@ import com.google.gson.Gson
class TextActivity : BaseActivity<ActivityTextBinding>(ActivityTextBinding::inflate) {
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
......
......@@ -30,6 +30,12 @@ class TextCodeActivity : BaseActivity<ActivityTextCodeBinding>(ActivityTextCodeB
private var textUIBean = TextUIBean()
private var tempImage: String = ""
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
}
override fun initView() {
super.initView()
......
......@@ -17,6 +17,11 @@ class WebsiteActivity : BaseActivity<ActivityWebsiteBinding>(ActivityWebsiteBind
private var websiteUIBean = WebsiteUIBean()
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
......
......@@ -26,6 +26,11 @@ class WebsiteCodeActivity : BaseActivity<ActivityWebsiteCodeBinding>(ActivityWeb
private var websiteUIBean = WebsiteUIBean()
private var tempImage: String = ""
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
......
......@@ -36,6 +36,11 @@ class WifiActivity : BaseActivity<ActivityWifiBinding>(ActivityWifiBinding::infl
private var wifiScanFinish: Boolean = false
private var currentWifi: WifiUIBean = WifiUIBean()
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
......
......@@ -27,6 +27,13 @@ class WifiCodeActivity : BaseActivity<ActivityWifiCodeBinding>(ActivityWifiCodeB
private var wifiBean: WifiUIBean = WifiUIBean()
private var wifiContent: String = ""
private var tempImage: String = ""
override fun onResumeOneShoot() {
super.onResumeOneShoot()
val flag = changeLanguage()
if (flag) return
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
......
......@@ -71,12 +71,11 @@
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="18dp"
android:text="Web address"
android:text="@string/web_address"
android:textColor="#6473F8"
android:textSize="16sp" />
<EditText
android:text="http://"
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="52dp"
......@@ -87,6 +86,7 @@
android:hint="http://"
android:inputType="textUri"
android:paddingHorizontal="14dp"
android:text="http://"
android:textColor="@color/black"
android:textColorHint="#999999" />
</LinearLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="create">创建</string>
<string name="scan">扫描</string>
<string name="history">历史</string>
<string name="settings">设置</string>
<string name="password">密码</string>
<string name="content">内容</string>
<string name="subject">副标题</string>
<string name="website">网站</string>
<string name="text">文本</string>
<string name="change_language">改变语言</string>
<string name="send_feedback">提交反馈</string>
<string name="privacy_policy">隐私政策</string>
</resources>
\ No newline at end of file
......@@ -63,4 +63,5 @@
<string name="version">"Version "</string>
<string name="no_qrcode">NO QRCode</string>
<string name="choose_language">Choose language</string>
<string name="web_address">Web address</string>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment