移除compose,compose在华为手机报错崩溃
This commit is contained in:
@@ -61,7 +61,6 @@ android {
|
|||||||
buildFeatures {
|
buildFeatures {
|
||||||
buildConfig true
|
buildConfig true
|
||||||
viewBinding true
|
viewBinding true
|
||||||
compose true
|
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
@@ -112,9 +111,6 @@ android {
|
|||||||
sourceCompatibility JavaVersion.VERSION_11
|
sourceCompatibility JavaVersion.VERSION_11
|
||||||
targetCompatibility JavaVersion.VERSION_11
|
targetCompatibility JavaVersion.VERSION_11
|
||||||
}
|
}
|
||||||
composeOptions {
|
|
||||||
kotlinCompilerExtensionVersion "$compose_compiler_version"
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
// Adds exported schema location as test app assets.
|
// Adds exported schema location as test app assets.
|
||||||
@@ -171,18 +167,6 @@ dependencies {
|
|||||||
implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")
|
implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")
|
||||||
implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")
|
implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")
|
||||||
|
|
||||||
//compose
|
|
||||||
// Integration with activities
|
|
||||||
implementation 'androidx.activity:activity-compose:1.6.1'
|
|
||||||
// Compose Material Design
|
|
||||||
implementation "androidx.compose.material:material:$compose_version"
|
|
||||||
// Animations
|
|
||||||
implementation "androidx.compose.animation:animation:$compose_version"
|
|
||||||
// Tooling support (Previews, etc.)
|
|
||||||
implementation "androidx.compose.ui:ui-tooling:$compose_version"
|
|
||||||
// UI Tests
|
|
||||||
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
|
|
||||||
|
|
||||||
//media
|
//media
|
||||||
implementation("androidx.media:media:1.6.0")
|
implementation("androidx.media:media:1.6.0")
|
||||||
implementation("com.google.android.exoplayer:exoplayer-core:$exoplayer_version")
|
implementation("com.google.android.exoplayer:exoplayer-core:$exoplayer_version")
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import android.view.Menu
|
|||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.compose.runtime.mutableStateOf
|
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.VMBaseActivity
|
import io.legado.app.base.VMBaseActivity
|
||||||
import io.legado.app.constant.EventBus
|
import io.legado.app.constant.EventBus
|
||||||
@@ -32,7 +31,6 @@ import io.legado.app.ui.book.read.ReadBookActivity
|
|||||||
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
import io.legado.app.ui.book.source.edit.BookSourceEditActivity
|
||||||
import io.legado.app.ui.book.toc.TocActivityResult
|
import io.legado.app.ui.book.toc.TocActivityResult
|
||||||
import io.legado.app.ui.login.SourceLoginActivity
|
import io.legado.app.ui.login.SourceLoginActivity
|
||||||
import io.legado.app.ui.theme.AppTheme
|
|
||||||
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
|
import io.legado.app.ui.widget.seekbar.SeekBarChangeListener
|
||||||
import io.legado.app.utils.*
|
import io.legado.app.utils.*
|
||||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||||
@@ -52,7 +50,7 @@ class AudioPlayActivity :
|
|||||||
override val binding by viewBinding(ActivityAudioPlayBinding::inflate)
|
override val binding by viewBinding(ActivityAudioPlayBinding::inflate)
|
||||||
override val viewModel by viewModels<AudioPlayViewModel>()
|
override val viewModel by viewModels<AudioPlayViewModel>()
|
||||||
private var adjustProgress = false
|
private var adjustProgress = false
|
||||||
private val timerViewState = mutableStateOf(false)
|
|
||||||
private val progressTimeFormat by lazy {
|
private val progressTimeFormat by lazy {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
SimpleDateFormat("mm:ss", Locale.getDefault())
|
SimpleDateFormat("mm:ss", Locale.getDefault())
|
||||||
@@ -166,19 +164,11 @@ class AudioPlayActivity :
|
|||||||
}
|
}
|
||||||
binding.ivTimer.setOnClickListener {
|
binding.ivTimer.setOnClickListener {
|
||||||
if (AudioPlayService.isRun) {
|
if (AudioPlayService.isRun) {
|
||||||
timerViewState.value = true
|
|
||||||
} else {
|
} else {
|
||||||
toastOnUi(R.string.cannot_timed_non_playback)
|
toastOnUi(R.string.cannot_timed_non_playback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
binding.composeView.setContent {
|
|
||||||
AppTheme {
|
|
||||||
TimerDialog(
|
|
||||||
state = timerViewState,
|
|
||||||
binding.ivTimer
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun upCover(path: String?) {
|
private fun upCover(path: String?) {
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
package io.legado.app.ui.book.audio
|
|
||||||
|
|
||||||
import android.view.View
|
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
|
||||||
import androidx.compose.foundation.layout.padding
|
|
||||||
import androidx.compose.material.Card
|
|
||||||
import androidx.compose.material.Slider
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
import androidx.compose.runtime.MutableState
|
|
||||||
import androidx.compose.runtime.mutableStateOf
|
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.ui.Modifier
|
|
||||||
import androidx.compose.ui.unit.dp
|
|
||||||
import androidx.compose.ui.window.Dialog
|
|
||||||
import io.legado.app.model.AudioPlay
|
|
||||||
import io.legado.app.service.AudioPlayService
|
|
||||||
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun TimerDialog(state: MutableState<Boolean>, parent: View) {
|
|
||||||
val intOffset = IntArray(2)
|
|
||||||
parent.getLocationInWindow(intOffset)
|
|
||||||
if (state.value) {
|
|
||||||
val timeMinute = remember {
|
|
||||||
mutableStateOf(AudioPlayService.timeMinute)
|
|
||||||
}
|
|
||||||
Dialog(onDismissRequest = { state.value = false }) {
|
|
||||||
Card(Modifier.fillMaxWidth()) {
|
|
||||||
Slider(
|
|
||||||
modifier = Modifier.padding(horizontal = 16.dp),
|
|
||||||
value = timeMinute.value.toFloat(),
|
|
||||||
onValueChange = {
|
|
||||||
timeMinute.value = it.toInt()
|
|
||||||
AudioPlay.setTimer(it.toInt())
|
|
||||||
},
|
|
||||||
valueRange = 0f..180f,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
package io.legado.app.ui.theme
|
|
||||||
|
|
||||||
import androidx.compose.material.MaterialTheme
|
|
||||||
import androidx.compose.material.darkColors
|
|
||||||
import androidx.compose.material.lightColors
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
import androidx.compose.ui.graphics.Color
|
|
||||||
import io.legado.app.help.config.ThemeConfig
|
|
||||||
import io.legado.app.lib.theme.accentColor
|
|
||||||
import io.legado.app.lib.theme.primaryColor
|
|
||||||
import io.legado.app.utils.ColorUtils
|
|
||||||
import splitties.init.appCtx
|
|
||||||
|
|
||||||
object AppTheme {
|
|
||||||
|
|
||||||
val colors
|
|
||||||
get() = if (ThemeConfig.isDarkTheme()) {
|
|
||||||
darkColors(
|
|
||||||
primary = Color(appCtx.accentColor),
|
|
||||||
primaryVariant = Color(ColorUtils.darkenColor(appCtx.accentColor)),
|
|
||||||
secondary = Color(appCtx.primaryColor),
|
|
||||||
secondaryVariant = Color(appCtx.primaryColor)
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
lightColors(
|
|
||||||
primary = Color(appCtx.accentColor),
|
|
||||||
primaryVariant = Color(ColorUtils.darkenColor(appCtx.accentColor)),
|
|
||||||
secondary = Color(appCtx.primaryColor),
|
|
||||||
secondaryVariant = Color(appCtx.primaryColor)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun AppTheme(content: @Composable () -> Unit) {
|
|
||||||
MaterialTheme(
|
|
||||||
colors = AppTheme.colors,
|
|
||||||
content = content
|
|
||||||
)
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
package io.legado.app.ui.widget.checkbox
|
|
||||||
|
|
||||||
import androidx.compose.foundation.clickable
|
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
||||||
import androidx.compose.foundation.layout.*
|
|
||||||
import androidx.compose.material.ButtonDefaults
|
|
||||||
import androidx.compose.material.Checkbox
|
|
||||||
import androidx.compose.material.MaterialTheme
|
|
||||||
import androidx.compose.material.Text
|
|
||||||
import androidx.compose.material.ripple.rememberRipple
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.ui.Alignment
|
|
||||||
import androidx.compose.ui.Modifier
|
|
||||||
import androidx.compose.ui.draw.clip
|
|
||||||
import androidx.compose.ui.unit.dp
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
fun LabelledCheckBox(
|
|
||||||
checked: Boolean,
|
|
||||||
onCheckedChange: ((Boolean) -> Unit),
|
|
||||||
label: String,
|
|
||||||
modifier: Modifier = Modifier
|
|
||||||
) {
|
|
||||||
Row(
|
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
|
||||||
modifier = modifier
|
|
||||||
.clip(MaterialTheme.shapes.small)
|
|
||||||
.clickable(
|
|
||||||
indication = rememberRipple(color = MaterialTheme.colors.primary),
|
|
||||||
interactionSource = remember { MutableInteractionSource() },
|
|
||||||
onClick = { onCheckedChange(!checked) }
|
|
||||||
)
|
|
||||||
.requiredHeight(ButtonDefaults.MinHeight)
|
|
||||||
.padding(4.dp)
|
|
||||||
) {
|
|
||||||
Checkbox(
|
|
||||||
checked = checked,
|
|
||||||
onCheckedChange = null
|
|
||||||
)
|
|
||||||
|
|
||||||
Spacer(Modifier.size(6.dp))
|
|
||||||
|
|
||||||
Text(
|
|
||||||
text = label,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -25,10 +25,4 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:layout_constraintBottom_toBottomOf="parent" />
|
app:layout_constraintBottom_toBottomOf="parent" />
|
||||||
|
|
||||||
<androidx.compose.ui.platform.ComposeView
|
|
||||||
android:id="@+id/compose_view"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -228,10 +228,4 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<androidx.compose.ui.platform.ComposeView
|
|
||||||
android:id="@+id/compose_view"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
Reference in New Issue
Block a user