Files
assistant-android/app/src/main/java/com/gh/base/NightModeSwitchHelper.kt
2022-06-02 15:08:11 +08:00

109 lines
4.7 KiB
Kotlin

package com.gh.base
import android.os.Build
import android.view.Gravity
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import com.gh.gamecenter.R
import com.gh.gamecenter.common.utils.DialogHelper
import com.gh.gamecenter.common.utils.NightModeUtils
import com.gh.gamecenter.common.utils.PackageFlavorHelper
import com.gh.gamecenter.common.utils.dip2px
import com.lzf.easyfloat.EasyFloat
import com.lzf.easyfloat.enums.ShowPattern
import com.lzf.easyfloat.enums.SidePattern
import com.squareup.picasso.Picasso
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 ->
val url = "https://ps.w.org/dark-mode-for-wp-dashboard/assets/icon-128x128.png"
view?.findViewById<ImageView>(R.id.iconIv)?.let {
Picasso.with(activity).load(url).into(it)
}
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) {
//切换深色模式
var mode = "普通模式"
var positive = "跟随系统模式"
var negative ="深色模式"
if (NightModeUtils.getSystemMode()) {
mode = "跟随系统模式"
positive = "普通模式"
negative = "深色模式"
} else if (NightModeUtils.getNightMode()) {
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)
)
}
}
}