109 lines
4.7 KiB
Kotlin
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)
|
|
)
|
|
}
|
|
}
|
|
} |