From 5cff7337d694737bc15ffe4d2084cf1804fd8ec3 Mon Sep 17 00:00:00 2001 From: juntao Date: Wed, 1 Jun 2022 15:22:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AE=80=E9=99=8B=E7=9A=84?= =?UTF-8?q?=E6=97=A5=E5=A4=9C=E9=97=B4=E6=A8=A1=E5=BC=8F=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E6=B5=AE=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/GlobalActivityLifecycleObserver.kt | 13 ++- .../java/com/gh/base/NightModeSwitchHelper.kt | 107 ++++++++++++++++++ .../personal/PersonalFunctionAdapter.kt | 26 ++--- .../gamecenter/personal/PersonalViewModel.kt | 10 -- .../layout_day_mode_night_mode_switch.xml | 13 +++ 5 files changed, 138 insertions(+), 31 deletions(-) create mode 100644 app/src/main/java/com/gh/base/NightModeSwitchHelper.kt create mode 100644 app/src/main/res/layout/layout_day_mode_night_mode_switch.xml diff --git a/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt b/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt index bad092fad6..c1a9e02375 100644 --- a/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt +++ b/app/src/main/java/com/gh/base/GlobalActivityLifecycleObserver.kt @@ -3,10 +3,12 @@ package com.gh.base import android.app.Activity import android.app.Application import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.gh.common.util.FloatingBackViewManager import com.gh.download.DownloadManager import com.gh.gamecenter.MainActivity import com.gh.gamecenter.SplashScreenActivity +import com.gh.gamecenter.common.utils.PackageFlavorHelper import com.gh.gamecenter.energy.EnergyCenterActivity import com.gh.gamecenter.forum.detail.ForumDetailActivity import com.gh.gamecenter.forum.list.ForumListActivity @@ -19,7 +21,7 @@ import com.halo.assistant.HaloApp class GlobalActivityLifecycleObserver : Application.ActivityLifecycleCallbacks { override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { - + // do nothing } override fun onActivityStarted(activity: Activity) { @@ -53,6 +55,10 @@ class GlobalActivityLifecycleObserver : Application.ActivityLifecycleCallbacks { e.printStackTrace() } } + + if (PackageFlavorHelper.IS_TEST_FLAVOR) { + NightModeSwitchHelper.showNightModeSwitchFloatingView(activity as AppCompatActivity) + } } private fun shouldShowActivityBackView(activity: Activity): Boolean { @@ -66,6 +72,9 @@ class GlobalActivityLifecycleObserver : Application.ActivityLifecycleCallbacks { override fun onActivityPaused(activity: Activity) { FloatingBackViewManager.dismissBackView() + if (PackageFlavorHelper.IS_TEST_FLAVOR) { + NightModeSwitchHelper.dismissNightModeSwitchFloatingView() + } } override fun onActivityStopped(activity: Activity) { @@ -77,7 +86,7 @@ class GlobalActivityLifecycleObserver : Application.ActivityLifecycleCallbacks { } override fun onActivityDestroyed(activity: Activity) { - + // do nothing } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/base/NightModeSwitchHelper.kt b/app/src/main/java/com/gh/base/NightModeSwitchHelper.kt new file mode 100644 index 0000000000..4fdc6564a4 --- /dev/null +++ b/app/src/main/java/com/gh/base/NightModeSwitchHelper.kt @@ -0,0 +1,107 @@ +package com.gh.base + +import android.os.Build +import android.view.Gravity +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AppCompatDelegate +import com.facebook.drawee.view.SimpleDraweeView +import com.gh.gamecenter.R +import com.gh.gamecenter.common.utils.* +import com.lzf.easyfloat.EasyFloat +import com.lzf.easyfloat.enums.ShowPattern +import com.lzf.easyfloat.enums.SidePattern + +object NightModeSwitchHelper { + + fun showNightModeSwitchFloatingView(activity: AppCompatActivity) { + if (PackageFlavorHelper.IS_TEST_FLAVOR) { + EasyFloat.with(activity) + .setLayout(R.layout.layout_day_mode_night_mode_switch) + .setTag("night_mode_switch_floating_view") + .setAnimator(null) + .setGravity(Gravity.TOP.xor(Gravity.END), 0, 114F.dip2px()) + .setSidePattern(SidePattern.RESULT_SIDE) + .setDragEnable(true) + .setShowPattern(ShowPattern.CURRENT_ACTIVITY) + .registerCallback { + createResult { _, _, view -> + view?.findViewById(R.id.iconIv) + ?.display("https://ps.w.org/dark-mode-for-wp-dashboard/assets/icon-128x128.png") + view?.setOnClickListener { + showNightModeSwitchDialog(activity) + } + } + } + .show() + } + } + + fun dismissNightModeSwitchFloatingView() { + if (PackageFlavorHelper.IS_TEST_FLAVOR) { + EasyFloat.dismiss("night_mode_switch_floating_view") + } + } + + private fun showNightModeSwitchDialog(activity: AppCompatActivity) { + if (PackageFlavorHelper.IS_TEST_FLAVOR) { + //切换深色模式 + val mode: String + val positive: String + val negative: String + if (NightModeUtils.getSystemMode()) { + mode = "跟随系统模式" + positive = "普通模式" + negative = "深色模式" + } else if (NightModeUtils.getNightMode()) { + mode = "深色模式" + positive = "跟随系统模式" + negative = "普通模式" + } else { + mode = "普通模式" + positive = "跟随系统模式" + negative = "深色模式" + } + DialogHelper.showDialog( + context = activity, + title = "选择模式", + content = "当前为 $mode", + confirmText = positive, + cancelText = negative, + confirmClickCallback = { + if (NightModeUtils.getSystemMode()) { + NightModeUtils.setNightMode(false) + NightModeUtils.setSystemMode(false) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + activity.delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_NO + } + } else { + NightModeUtils.setSystemMode(true) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + activity.delegate.localNightMode = + AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM + } + } + NightModeUtils.initNightMode() + }, + cancelClickCallback = { + if (NightModeUtils.getSystemMode()) { + NightModeUtils.setNightMode(true) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + activity.delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES + } + } else { + val nightMode = NightModeUtils.getNightMode() + NightModeUtils.setNightMode(!NightModeUtils.getNightMode()) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + activity.delegate.localNightMode = + if (nightMode) AppCompatDelegate.MODE_NIGHT_NO else AppCompatDelegate.MODE_NIGHT_YES + } + } + NightModeUtils.setSystemMode(false) + NightModeUtils.initNightMode() + }, + extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true) + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt index e48ed57cab..44ca6953e5 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFunctionAdapter.kt @@ -8,15 +8,18 @@ import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.app.AppCompatDelegate import androidx.recyclerview.widget.RecyclerView import com.facebook.drawee.view.SimpleDraweeView -import com.gh.common.util.* +import com.gh.common.util.CheckLoginUtils +import com.gh.common.util.DataCollectionUtils +import com.gh.common.util.DirectUtils import com.gh.common.util.NewLogUtils import com.gh.gamecenter.* import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.utils.* +import com.gh.gamecenter.common.utils.DialogHelper +import com.gh.gamecenter.common.utils.ImageUtils +import com.gh.gamecenter.common.utils.PermissionHelper +import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.core.utils.EmptyCallback import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.core.utils.SPUtils @@ -313,21 +316,6 @@ class PersonalFunctionAdapter(val context: Context, val groupName: String, var m } } else -> { - if (PackageFlavorHelper.IS_TEST_FLAVOR && linkEntity.type == "night_mode") { - val isNightMode = NightModeUtils.getNightMode() - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - NightModeUtils.setNightMode(!isNightMode) - if (isNightMode) { - (context as AppCompatActivity).delegate.localNightMode = - AppCompatDelegate.MODE_NIGHT_NO - } else { - (context as AppCompatActivity).delegate.localNightMode = - AppCompatDelegate.MODE_NIGHT_YES - } - } - return - } DirectUtils.directToLinkPage(context, linkEntity, "", "我的光环") } } diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalViewModel.kt b/app/src/main/java/com/gh/gamecenter/personal/PersonalViewModel.kt index 85104de9fc..28b9bad513 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalViewModel.kt @@ -11,7 +11,6 @@ import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.MainActivity import com.gh.gamecenter.NewsDetailActivity import com.gh.gamecenter.R -import com.gh.gamecenter.common.utils.PackageFlavorHelper import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.entity.* @@ -78,15 +77,6 @@ class PersonalViewModel(application: Application) : AndroidViewModel(application .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : BiResponse>() { override fun onSuccess(data: ArrayList) { - if (PackageFlavorHelper.IS_TEST_FLAVOR) { - data.firstOrNull()?.addons?.add( - FunctionalLinkEntity().apply { - icon = "https://dev-and-static.ghzs.com/image/game/icon/2022/05/17/6283180e5e90cb01b870b39e.gif" - name = "日夜切换" - type = "night_mode" - } - ) - } haloAddData.postValue(data) data.forEach loop@{ it.addons.forEach { link -> diff --git a/app/src/main/res/layout/layout_day_mode_night_mode_switch.xml b/app/src/main/res/layout/layout_day_mode_night_mode_switch.xml new file mode 100644 index 0000000000..45e4144c19 --- /dev/null +++ b/app/src/main/res/layout/layout_day_mode_night_mode_switch.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file