feat:亮度实时调节
This commit is contained in:
@@ -1,7 +1,10 @@
|
|||||||
package io.legado.app.ui.book.read
|
package io.legado.app.ui.book.read
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.ContextWrapper
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import androidx.activity.compose.LocalActivity
|
||||||
import androidx.compose.animation.AnimatedContent
|
import androidx.compose.animation.AnimatedContent
|
||||||
import androidx.compose.animation.AnimatedVisibility
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
import androidx.compose.animation.SizeTransform
|
import androidx.compose.animation.SizeTransform
|
||||||
@@ -3004,6 +3007,7 @@ private fun BrightnessBar(
|
|||||||
buttonGlassEnabled: Boolean = false,
|
buttonGlassEnabled: Boolean = false,
|
||||||
glassThumbEnabled: Boolean = false,
|
glassThumbEnabled: Boolean = false,
|
||||||
) {
|
) {
|
||||||
|
val activity = LocalActivity.current
|
||||||
var sliderValue by remember { mutableFloatStateOf(brightness.toFloat()) }
|
var sliderValue by remember { mutableFloatStateOf(brightness.toFloat()) }
|
||||||
var sliderDragging by remember { mutableStateOf(false) }
|
var sliderDragging by remember { mutableStateOf(false) }
|
||||||
|
|
||||||
@@ -3016,6 +3020,23 @@ private fun BrightnessBar(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun updateSliderValue(value: Float) {
|
||||||
|
if (brightnessAuto) return
|
||||||
|
sliderDragging = true
|
||||||
|
sliderValue = value.coerceIn(0f, 100f)
|
||||||
|
val target = value.roundToInt().coerceIn(0, 100)
|
||||||
|
|
||||||
|
//直接先改亮度,如果在这里onBrightnessChange,会ANR
|
||||||
|
activity?.let { act ->
|
||||||
|
val lp = act.window.attributes
|
||||||
|
val targetBrightness = target / 100f
|
||||||
|
if (lp.screenBrightness != targetBrightness) {
|
||||||
|
lp.screenBrightness = targetBrightness
|
||||||
|
act.window.attributes = lp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun commitSliderValue(value: Float) {
|
fun commitSliderValue(value: Float) {
|
||||||
val target = value.roundToInt().coerceIn(0, 100)
|
val target = value.roundToInt().coerceIn(0, 100)
|
||||||
sliderDragging = false
|
sliderDragging = false
|
||||||
@@ -3052,8 +3073,7 @@ private fun BrightnessBar(
|
|||||||
value = sliderValue.coerceIn(0f, 100f),
|
value = sliderValue.coerceIn(0f, 100f),
|
||||||
onValueChange = { value ->
|
onValueChange = { value ->
|
||||||
if (brightnessAuto) return@AppVerticalSlider
|
if (brightnessAuto) return@AppVerticalSlider
|
||||||
sliderDragging = true
|
updateSliderValue(value)
|
||||||
sliderValue = value.coerceIn(0f, 100f)
|
|
||||||
},
|
},
|
||||||
onValueChangeFinished = {
|
onValueChangeFinished = {
|
||||||
commitSliderValue(sliderValue)
|
commitSliderValue(sliderValue)
|
||||||
@@ -3095,8 +3115,7 @@ private fun BrightnessBar(
|
|||||||
value = sliderValue.coerceIn(0f, 100f),
|
value = sliderValue.coerceIn(0f, 100f),
|
||||||
onValueChange = { value ->
|
onValueChange = { value ->
|
||||||
if (brightnessAuto) return@ReadMenuSlider
|
if (brightnessAuto) return@ReadMenuSlider
|
||||||
sliderDragging = true
|
updateSliderValue(value)
|
||||||
sliderValue = value.coerceIn(0f, 100f)
|
|
||||||
},
|
},
|
||||||
onValueChangeFinished = {
|
onValueChangeFinished = {
|
||||||
commitSliderValue(sliderValue)
|
commitSliderValue(sliderValue)
|
||||||
|
|||||||
Reference in New Issue
Block a user