更新依赖

更新部分界面
This commit is contained in:
HapeLee
2025-07-22 14:10:12 +08:00
parent 82a2aa349e
commit 781615c777
31 changed files with 126 additions and 101 deletions
-1
View File
@@ -186,7 +186,6 @@ dependencies {
//noinspection GradleDependency,DifferentStdlibGradleVersion //noinspection GradleDependency,DifferentStdlibGradleVersion
//implementation(libs.kotlin.reflect) //implementation(libs.kotlin.reflect)
//协程 //协程
//def coroutines_version = '1.7.3' //def coroutines_version = '1.7.3'
implementation(libs.bundles.coroutines) implementation(libs.bundles.coroutines)
@@ -15,7 +15,6 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.card.MaterialCardView import com.google.android.material.card.MaterialCardView
import io.legato.kazusa.R import io.legato.kazusa.R
import androidx.core.graphics.toColorInt
import io.legato.kazusa.constant.EventBus import io.legato.kazusa.constant.EventBus
import io.legato.kazusa.utils.postEvent import io.legato.kazusa.utils.postEvent
@@ -106,7 +105,7 @@ class ThemeCardPreference(context: Context, attrs: AttributeSet) : Preference(co
com.google.android.material.R.attr.colorSecondaryContainer, com.google.android.material.R.attr.colorSecondaryContainer,
com.google.android.material.R.attr.colorSecondaryVariant, com.google.android.material.R.attr.colorSecondaryVariant,
com.google.android.material.R.attr.colorSurfaceContainer, com.google.android.material.R.attr.colorSurfaceContainer,
com.google.android.material.R.attr.colorPrimary, androidx.appcompat.R.attr.colorPrimary,
com.google.android.material.R.attr.colorOnSurfaceVariant, com.google.android.material.R.attr.colorOnSurfaceVariant,
com.google.android.material.R.attr.colorSurface, com.google.android.material.R.attr.colorSurface,
com.google.android.material.R.attr.colorSecondaryContainer, com.google.android.material.R.attr.colorSecondaryContainer,
@@ -34,7 +34,7 @@ class AboutActivity : BaseActivity<ActivityAboutBinding>() {
val typedValue = TypedValue() val typedValue = TypedValue()
val context = binding.root.context val context = binding.root.context
context.theme.resolveAttribute( context.theme.resolveAttribute(
com.google.android.material.R.attr.colorPrimary, androidx.appcompat.R.attr.colorPrimary,
typedValue, typedValue,
true true
) )
@@ -29,7 +29,8 @@ class BookmarkDecoration(
private val textPaint = TextPaint().apply { private val textPaint = TextPaint().apply {
textSize = 16f.spToPx() textSize = 16f.spToPx()
color = MaterialColors.getColor(context, com.google.android.material.R.attr.colorPrimary, Color.BLACK) color =
MaterialColors.getColor(context, androidx.appcompat.R.attr.colorPrimary, Color.BLACK)
isAntiAlias = true isAntiAlias = true
} }
@@ -1,11 +1,11 @@
package io.legato.kazusa.ui.book.changesource package io.legato.kazusa.ui.book.changesource
//import io.legado.app.lib.theme.getPrimaryTextColor
//import io.legado.app.lib.theme.primaryColor
import android.os.Bundle import android.os.Bundle
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup
import android.widget.ImageButton
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
@@ -18,7 +18,6 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import io.legato.kazusa.R import io.legato.kazusa.R
import io.legato.kazusa.base.BaseBottomSheetDialogFragment import io.legato.kazusa.base.BaseBottomSheetDialogFragment
import io.legato.kazusa.base.BaseDialogFragment
import io.legato.kazusa.constant.AppLog import io.legato.kazusa.constant.AppLog
import io.legato.kazusa.constant.EventBus import io.legato.kazusa.constant.EventBus
import io.legato.kazusa.data.appDb import io.legato.kazusa.data.appDb
@@ -29,8 +28,6 @@ import io.legato.kazusa.data.entities.SearchBook
import io.legato.kazusa.databinding.DialogBookChangeSourceBinding import io.legato.kazusa.databinding.DialogBookChangeSourceBinding
import io.legato.kazusa.help.config.AppConfig import io.legato.kazusa.help.config.AppConfig
import io.legato.kazusa.lib.dialogs.alert import io.legato.kazusa.lib.dialogs.alert
//import io.legado.app.lib.theme.getPrimaryTextColor
//import io.legado.app.lib.theme.primaryColor
import io.legato.kazusa.ui.book.read.ReadBookActivity import io.legato.kazusa.ui.book.read.ReadBookActivity
import io.legato.kazusa.ui.book.source.edit.BookSourceEditActivity import io.legato.kazusa.ui.book.source.edit.BookSourceEditActivity
import io.legato.kazusa.ui.book.source.manage.BookSourceActivity import io.legato.kazusa.ui.book.source.manage.BookSourceActivity
@@ -41,7 +38,6 @@ import io.legato.kazusa.utils.applyTint
import io.legato.kazusa.utils.dpToPx import io.legato.kazusa.utils.dpToPx
import io.legato.kazusa.utils.getCompatDrawable import io.legato.kazusa.utils.getCompatDrawable
import io.legato.kazusa.utils.observeEvent import io.legato.kazusa.utils.observeEvent
import io.legato.kazusa.utils.setLayout
import io.legato.kazusa.utils.startActivity import io.legato.kazusa.utils.startActivity
import io.legato.kazusa.utils.transaction import io.legato.kazusa.utils.transaction
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
@@ -95,11 +91,6 @@ class ChangeBookSourceDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_b
} }
} }
override fun onStart() {
super.onStart()
//setLayout(1f, ViewGroup.LayoutParams.MATCH_PARENT)
}
override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {
//binding.toolBar.setBackgroundColor(primaryColor) //binding.toolBar.setBackgroundColor(primaryColor)
viewModel.initData(arguments, callBack?.oldBook, activity is ReadBookActivity) viewModel.initData(arguments, callBack?.oldBook, activity is ReadBookActivity)
@@ -234,6 +225,10 @@ class ChangeBookSourceDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_b
repeatOnLifecycle(STARTED) { repeatOnLifecycle(STARTED) {
viewModel.searchDataFlow.conflate().collect { viewModel.searchDataFlow.conflate().collect {
adapter.setItems(it) adapter.setItems(it)
binding.loadingIndicator.isVisible = it.isEmpty()
binding.recyclerView.isVisible = it.isNotEmpty()
delay(1000) delay(1000)
} }
} }
@@ -33,7 +33,7 @@ class ChangeChapterTocAdapter(context: Context, val callback: Callback) :
val isDur = durChapterIndex == item.index val isDur = durChapterIndex == item.index
if (isDur) { if (isDur) {
tvChapterName.setTextColor(context.themeColor(com.google.android.material.R.attr.colorPrimary)) tvChapterName.setTextColor(context.themeColor(androidx.appcompat.R.attr.colorPrimary))
} else { } else {
tvChapterName.setTextColor(context.themeColor(com.google.android.material.R.attr.colorOnSurface)) tvChapterName.setTextColor(context.themeColor(com.google.android.material.R.attr.colorOnSurface))
} }
@@ -152,8 +152,6 @@ class MangaAdapter(private val context: Context) :
} }
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
return when { return when {
viewType >= TYPE_FOOTER_VIEW -> { viewType >= TYPE_FOOTER_VIEW -> {
@@ -265,7 +265,7 @@ class ReadMenu @JvmOverloads constructor(
fun upBrightnessState() { fun upBrightnessState() {
if (brightnessAuto()) { if (brightnessAuto()) {
binding.ivBrightnessAuto.setColorFilter(context.themeColor(com.google.android.material.R.attr.colorPrimary)) binding.ivBrightnessAuto.setColorFilter(context.themeColor(androidx.appcompat.R.attr.colorPrimary))
binding.seekBrightness.isEnabled = false binding.seekBrightness.isEnabled = false
} else { } else {
binding.ivBrightnessAuto.setColorFilter(context.themeColor(com.google.android.material.R.attr.colorOnSurface)) binding.ivBrightnessAuto.setColorFilter(context.themeColor(com.google.android.material.R.attr.colorOnSurface))
@@ -1,13 +1,11 @@
package io.legato.kazusa.ui.book.read.page package io.legato.kazusa.ui.book.read.page
import android.content.Context
import android.graphics.Canvas import android.graphics.Canvas
import android.graphics.Paint import android.graphics.Paint
import android.os.SystemClock import android.os.SystemClock
import androidx.core.graphics.withClip import androidx.core.graphics.withClip
import io.legato.kazusa.help.config.AppConfig import io.legato.kazusa.help.config.AppConfig
import io.legato.kazusa.help.config.ReadBookConfig import io.legato.kazusa.help.config.ReadBookConfig
import io.legato.kazusa.lib.theme.ThemeStore
import io.legato.kazusa.ui.book.read.page.entities.PageDirection import io.legato.kazusa.ui.book.read.page.entities.PageDirection
import io.legato.kazusa.utils.canvasrecorder.CanvasRecorderFactory import io.legato.kazusa.utils.canvasrecorder.CanvasRecorderFactory
import io.legato.kazusa.utils.canvasrecorder.recordIfNeeded import io.legato.kazusa.utils.canvasrecorder.recordIfNeeded
@@ -31,7 +29,7 @@ class AutoPager(
fun start() { fun start() {
isRunning = true isRunning = true
paint.color = readView.context.themeColor(com.google.android.material.R.attr.colorPrimary) paint.color = readView.context.themeColor(androidx.appcompat.R.attr.colorPrimary)
lastTimeMillis = SystemClock.uptimeMillis() lastTimeMillis = SystemClock.uptimeMillis()
readView.curPage.upSelectAble(false) readView.curPage.upSelectAble(false)
readView.invalidate() readView.invalidate()
@@ -9,7 +9,6 @@ import io.legato.kazusa.help.PaintPool
import io.legato.kazusa.help.book.isImage import io.legato.kazusa.help.book.isImage
import io.legato.kazusa.help.config.AppConfig import io.legato.kazusa.help.config.AppConfig
import io.legato.kazusa.help.config.ReadBookConfig import io.legato.kazusa.help.config.ReadBookConfig
import io.legato.kazusa.lib.theme.ThemeStore
import io.legato.kazusa.model.ReadBook import io.legato.kazusa.model.ReadBook
import io.legato.kazusa.ui.book.read.page.ContentTextView import io.legato.kazusa.ui.book.read.page.ContentTextView
import io.legato.kazusa.ui.book.read.page.entities.TextPage.Companion.emptyTextPage import io.legato.kazusa.ui.book.read.page.entities.TextPage.Companion.emptyTextPage
@@ -174,7 +173,7 @@ data class TextLine(
ChapterProvider.contentPaint ChapterProvider.contentPaint
} }
val textColor = if (isReadAloud) { val textColor = if (isReadAloud) {
view.context.themeColor(com.google.android.material.R.attr.colorPrimary) view.context.themeColor(androidx.appcompat.R.attr.colorPrimary)
} else { } else {
ReadBookConfig.textColor ReadBookConfig.textColor
} }
@@ -242,7 +241,7 @@ data class TextLine(
@SuppressLint("NewApi") @SuppressLint("NewApi")
companion object { companion object {
val emptyTextLine = TextLine() val emptyTextLine = TextLine()
private val atLeastApi26 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O private val atLeastApi26 = true
private val atLeastApi35 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM private val atLeastApi35 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM
private val wordSpacingWorking by lazy { private val wordSpacingWorking by lazy {
// issue 3785 3846 // issue 3785 3846
@@ -4,7 +4,6 @@ import android.graphics.Canvas
import android.os.Build import android.os.Build
import androidx.annotation.Keep import androidx.annotation.Keep
import io.legato.kazusa.help.config.ReadBookConfig import io.legato.kazusa.help.config.ReadBookConfig
import io.legato.kazusa.lib.theme.ThemeStore
import io.legato.kazusa.ui.book.read.page.ContentTextView import io.legato.kazusa.ui.book.read.page.ContentTextView
import io.legato.kazusa.ui.book.read.page.entities.TextLine import io.legato.kazusa.ui.book.read.page.entities.TextLine
import io.legato.kazusa.ui.book.read.page.entities.TextLine.Companion.emptyTextLine import io.legato.kazusa.ui.book.read.page.entities.TextLine.Companion.emptyTextLine
@@ -50,7 +49,7 @@ data class TextColumn(
ChapterProvider.contentPaint ChapterProvider.contentPaint
} }
val textColor = if (textLine.isReadAloud || isSearchResult) { val textColor = if (textLine.isReadAloud || isSearchResult) {
view.context.themeColor(com.google.android.material.R.attr.colorPrimary) view.context.themeColor(androidx.appcompat.R.attr.colorPrimary)
} else { } else {
ReadBookConfig.textColor ReadBookConfig.textColor
} }
@@ -1,13 +1,11 @@
package io.legato.kazusa.ui.book.searchContent package io.legato.kazusa.ui.book.searchContent
//import io.legado.app.lib.theme.accentColor
import android.content.Context import android.content.Context
import android.view.ViewGroup import android.view.ViewGroup
import io.legato.kazusa.R
import io.legato.kazusa.base.adapter.ItemViewHolder import io.legato.kazusa.base.adapter.ItemViewHolder
import io.legato.kazusa.base.adapter.RecyclerAdapter import io.legato.kazusa.base.adapter.RecyclerAdapter
import io.legato.kazusa.databinding.ItemSearchListBinding import io.legato.kazusa.databinding.ItemSearchListBinding
//import io.legado.app.lib.theme.accentColor
import io.legato.kazusa.utils.getCompatColor
import io.legato.kazusa.utils.hexString import io.legato.kazusa.utils.hexString
import io.legato.kazusa.utils.themeColor import io.legato.kazusa.utils.themeColor
@@ -16,7 +14,8 @@ class SearchContentAdapter(context: Context, val callback: Callback) :
RecyclerAdapter<SearchResult, ItemSearchListBinding>(context) { RecyclerAdapter<SearchResult, ItemSearchListBinding>(context) {
val textColor = context.themeColor(com.google.android.material.R.attr.colorOnSurface).hexString.substring(2) val textColor = context.themeColor(com.google.android.material.R.attr.colorOnSurface).hexString.substring(2)
val accentColor = context.themeColor(com.google.android.material.R.attr.colorPrimary).hexString.substring(2) val accentColor =
context.themeColor(androidx.appcompat.R.attr.colorPrimary).hexString.substring(2)
override fun getViewBinding(parent: ViewGroup): ItemSearchListBinding { override fun getViewBinding(parent: ViewGroup): ItemSearchListBinding {
return ItemSearchListBinding.inflate(inflater, parent, false) return ItemSearchListBinding.inflate(inflater, parent, false)
@@ -9,7 +9,7 @@ import io.legato.kazusa.R
import io.legato.kazusa.base.BaseBottomSheetDialogFragment import io.legato.kazusa.base.BaseBottomSheetDialogFragment
import io.legato.kazusa.data.entities.DictRule import io.legato.kazusa.data.entities.DictRule
import io.legato.kazusa.databinding.DialogDictBinding import io.legato.kazusa.databinding.DialogDictBinding
import io.legato.kazusa.utils.invisible import io.legato.kazusa.utils.gone
import io.legato.kazusa.utils.setHtml import io.legato.kazusa.utils.setHtml
import io.legato.kazusa.utils.toastOnUi import io.legato.kazusa.utils.toastOnUi
import io.legato.kazusa.utils.viewbindingdelegate.viewBinding import io.legato.kazusa.utils.viewbindingdelegate.viewBinding
@@ -53,7 +53,7 @@ class DictDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_dict) {
val dictRule = tab.tag as DictRule val dictRule = tab.tag as DictRule
binding.rotateLoading.visible() binding.rotateLoading.visible()
viewModel.dict(dictRule, word!!) { viewModel.dict(dictRule, word!!) {
binding.rotateLoading.invisible() binding.rotateLoading.gone()
binding.tvDict.setHtml(it) binding.tvDict.setHtml(it)
} }
} }
@@ -1,5 +1,6 @@
package io.legato.kazusa.ui.widget.recycler.scroller package io.legato.kazusa.ui.widget.recycler.scroller
//import io.legado.app.lib.theme.accentColor
import android.animation.Animator import android.animation.Animator
import android.animation.AnimatorListenerAdapter import android.animation.AnimatorListenerAdapter
import android.annotation.SuppressLint import android.annotation.SuppressLint
@@ -11,7 +12,11 @@ import android.view.MotionEvent
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.ViewPropertyAnimator import android.view.ViewPropertyAnimator
import android.widget.* import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import androidx.annotation.IdRes import androidx.annotation.IdRes
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
@@ -20,13 +25,11 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.DrawableCompat import androidx.core.graphics.drawable.DrawableCompat
import androidx.core.view.GravityCompat import androidx.core.view.GravityCompat
import androidx.core.view.ViewCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.StaggeredGridLayoutManager import androidx.recyclerview.widget.StaggeredGridLayoutManager
import io.legato.kazusa.R import io.legato.kazusa.R
//import io.legado.app.lib.theme.accentColor
import kotlin.math.max import kotlin.math.max
import kotlin.math.min import kotlin.math.min
import kotlin.math.roundToInt import kotlin.math.roundToInt
@@ -502,7 +505,7 @@ class FastScroller : LinearLayout {
mScrollbar = findViewById(R.id.fastscroll_scrollbar) mScrollbar = findViewById(R.id.fastscroll_scrollbar)
mHandleImage = mHandleView.drawable?.mutate() mHandleImage = mHandleView.drawable?.mutate()
val typedValue = TypedValue() val typedValue = TypedValue()
context.theme.resolveAttribute(com.google.android.material.R.attr.colorPrimary, typedValue, true) context.theme.resolveAttribute(androidx.appcompat.R.attr.colorPrimary, typedValue, true)
val defaultColor = typedValue.data val defaultColor = typedValue.data
var bubbleColor = defaultColor var bubbleColor = defaultColor
var handleColor = defaultColor var handleColor = defaultColor
@@ -7,7 +7,7 @@
<com.google.android.material.navigationrail.NavigationRailView <com.google.android.material.navigationrail.NavigationRailView
android:id="@+id/navigation_rail_view" android:id="@+id/navigation_rail_view"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="match_parent"
android:background="?attr/colorSurfaceContainer" android:background="?attr/colorSurfaceContainer"
app:menuGravity="center" app:menuGravity="center"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
+3 -1
View File
@@ -51,9 +51,11 @@
android:orientation="vertical"> android:orientation="vertical">
<com.google.android.material.progressindicator.CircularProgressIndicator <com.google.android.material.progressindicator.CircularProgressIndicator
style="@style/Widget.Material3.CircularProgressIndicator.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:waveAmplitude="2dp"
app:waveSpeed="2dp"
app:wavelength="2dp"
android:indeterminate="true" android:indeterminate="true"
app:indicatorSize="40dp" /> app:indicatorSize="40dp" />
@@ -79,11 +79,11 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.progressindicator.CircularProgressIndicator <com.google.android.material.loadingindicator.LoadingIndicator
android:id="@+id/rotate_loading" android:id="@+id/rotate_loading"
android:layout_width="48dp" style="@style/Widget.Material3.LoadingIndicator.Contained"
android:layout_height="48dp" android:layout_width="wrap_content"
android:indeterminate="false" android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/book_info" app:layout_constraintBottom_toBottomOf="@+id/book_info"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
@@ -23,6 +23,15 @@
android:indeterminate="true" android:indeterminate="true"
app:layout_constraintTop_toBottomOf="@+id/tool_bar" /> app:layout_constraintTop_toBottomOf="@+id/tool_bar" />
<com.google.android.material.loadingindicator.LoadingIndicator
android:id="@+id/loading_indicator"
style="@style/Widget.Material3.LoadingIndicator.Contained"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="32dp"
android:visibility="visible" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view" android:id="@+id/recycler_view"
android:layout_width="match_parent" android:layout_width="match_parent"
@@ -91,7 +91,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:gravity="center_vertical" android:gravity="center_vertical"
android:padding="16dp"> android:paddingHorizontal="16dp">
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/btn_delete" android:id="@+id/btn_delete"
@@ -32,8 +32,8 @@
android:id="@+id/tv_cancel" android:id="@+id/tv_cancel"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginRight="16dp" style="@style/Widget.Material3Expressive.Button.OutlinedButton"
android:padding="12dp" android:layout_marginEnd="8dp"
android:text="@string/cancel" android:text="@string/cancel"
tools:ignore="RtlHardcoded" /> tools:ignore="RtlHardcoded" />
@@ -41,8 +41,8 @@
android:id="@+id/tv_ok" android:id="@+id/tv_ok"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginRight="16dp" style="@style/Widget.Material3Expressive.Button.TonalButton"
android:padding="12dp" android:layout_marginEnd="16dp"
android:text="@string/ok" android:text="@string/ok"
tools:ignore="RtlHardcoded" /> tools:ignore="RtlHardcoded" />
@@ -206,7 +206,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/btnCancel" android:id="@+id/btnCancel"
style="@style/Widget.Material3.Button.OutlinedButton" style="@style/Widget.Material3Expressive.Button.OutlinedButton"
android:text="取消" android:text="取消"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -214,7 +214,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/btnOk" android:id="@+id/btnOk"
style="@style/Widget.Material3.Button" style="@style/Widget.Material3Expressive.Button"
android:text="确定" android:text="确定"
android:layout_width="wrap_content" android:layout_width="wrap_content"
+37 -19
View File
@@ -1,19 +1,23 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="320dp"
android:orientation="vertical"
android:paddingHorizontal="16dp" android:paddingHorizontal="16dp"
android:paddingVertical="8dp"> android:paddingVertical="8dp">
<!-- 顶部标题容器 -->
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:id="@+id/header_layout"
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
android:gravity="center"
android:paddingHorizontal="16dp" android:paddingHorizontal="16dp"
android:paddingVertical="8dp"> android:paddingVertical="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<View <View
android:layout_width="36dp" android:layout_width="36dp"
@@ -29,31 +33,45 @@
android:text="词典" android:text="词典"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" /> android:textStyle="bold" />
</LinearLayout> </LinearLayout>
<!-- TabLayout -->
<com.google.android.material.tabs.TabLayout <com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout" android:id="@+id/tab_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@android:color/transparent" /> android:background="@android:color/transparent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/header_layout" />
<!-- LoadingIndicator 居中显示 -->
<com.google.android.material.loadingindicator.LoadingIndicator
android:id="@+id/rotate_loading"
style="@style/Widget.Material3.LoadingIndicator.Contained"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="32dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tab_layout" />
<!-- ScrollView 显示字典内容 -->
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/scroll_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:minHeight="64dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tab_layout">
<io.legato.kazusa.ui.widget.text.ScrollTextView <io.legato.kazusa.ui.widget.text.ScrollTextView
android:id="@+id/tv_dict" android:id="@+id/tv_dict"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" /> android:layout_height="match_parent" />
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/rotate_loading"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:indeterminate="true" />
</LinearLayout>
+4 -5
View File
@@ -6,12 +6,11 @@
android:padding="16dp" android:padding="16dp"
android:orientation="horizontal"> android:orientation="horizontal">
<com.google.android.material.progressindicator.CircularProgressIndicator <com.google.android.material.loadingindicator.LoadingIndicator
android:id="@+id/pb" android:id="@+id/pb"
android:layout_width="30dp" style="@style/Widget.Material3.LoadingIndicator.Contained"
android:layout_height="30dp" android:layout_width="wrap_content"
android:indeterminateBehavior="repeat" android:layout_height="wrap_content" />
android:indeterminateOnly="true" />
<TextView <TextView
android:id="@+id/tv_msg" android:id="@+id/tv_msg"
@@ -25,19 +25,18 @@
android:id="@+id/loading" android:id="@+id/loading"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
style="@style/Widget.Material3.CircularProgressIndicator" android:indeterminate="false"
app:indicatorSize="80dp"
android:layout_gravity="center" android:layout_gravity="center"
android:indeterminate="true" app:showAnimationBehavior="outward" />
app:indicatorSize="64dp" />
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/retry" android:id="@+id/retry"
style="@style/Widget.Material3.Button.OutlinedButton" style="@style/Widget.Material3Expressive.Button.TonalButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:padding="8dp"
android:text="重新加载" android:text="重新加载"
android:textSize="18sp" android:textSize="18sp"
android:textColor="?attr/colorSurfaceVariant" android:textColor="?attr/colorSurfaceVariant"
+6 -3
View File
@@ -7,10 +7,13 @@
<com.google.android.material.progressindicator.CircularProgressIndicator <com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/rotate_loading" android:id="@+id/rotate_loading"
android:layout_width="36dp" android:layout_width="wrap_content"
android:layout_height="36dp" android:layout_height="wrap_content"
android:layout_margin="6dp" android:layout_margin="8dp"
android:layout_gravity="center" android:layout_gravity="center"
app:waveAmplitude="2dp"
app:waveSpeed="2dp"
app:wavelength="2dp"
android:visibility="invisible" android:visibility="invisible"
android:indeterminate="true" /> android:indeterminate="true" />
+5 -3
View File
@@ -5,10 +5,11 @@
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical"> android:orientation="vertical">
<androidx.core.widget.ContentLoadingProgressBar <com.google.android.material.loadingindicator.LoadingIndicator
style="@style/Widget.Material3.LoadingIndicator.Contained"
android:id="@+id/loading_progress" android:id="@+id/loading_progress"
android:layout_width="48dp" android:layout_width="wrap_content"
android:layout_height="48dp" /> android:layout_height="wrap_content" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_loading_message" android:id="@+id/tv_loading_message"
@@ -16,4 +17,5 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="16dp" android:paddingTop="16dp"
android:text="@string/dynamic_loading" /> android:text="@string/dynamic_loading" />
</LinearLayout> </LinearLayout>
+4 -3
View File
@@ -2,6 +2,7 @@
<com.google.android.material.button.MaterialButtonToggleGroup xmlns:android="http://schemas.android.com/apk/res/android" <com.google.android.material.button.MaterialButtonToggleGroup xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/theme_toggle_group" android:id="@+id/theme_toggle_group"
style="@style/Widget.Material3.MaterialButtonGroup.Connected"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="48dp" android:layout_height="48dp"
android:orientation="horizontal" android:orientation="horizontal"
@@ -11,7 +12,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/btn_system" android:id="@+id/btn_system"
style="@style/Widget.Material3.Button.OutlinedButton" style="@style/Widget.Material3Expressive.Button"
app:checkedIcon="@drawable/ic_check" app:checkedIcon="@drawable/ic_check"
android:checkable="true" android:checkable="true"
android:layout_width="0dp" android:layout_width="0dp"
@@ -21,7 +22,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/btn_light" android:id="@+id/btn_light"
style="@style/Widget.Material3.Button.OutlinedButton" style="@style/Widget.Material3Expressive.Button"
app:checkedIcon="@drawable/ic_check" app:checkedIcon="@drawable/ic_check"
android:checkable="true" android:checkable="true"
android:layout_width="0dp" android:layout_width="0dp"
@@ -31,7 +32,7 @@
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/btn_dark" android:id="@+id/btn_dark"
style="@style/Widget.Material3.Button.OutlinedButton" style="@style/Widget.Material3Expressive.Button"
app:checkedIcon="@drawable/ic_check" app:checkedIcon="@drawable/ic_check"
android:checkable="true" android:checkable="true"
android:layout_width="0dp" android:layout_width="0dp"
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="Base.AppTheme" parent="Theme.Material3.DynamicColors.DayNight.NoActionBar"> <style name="Base.AppTheme" parent="Theme.Material3Expressive.DynamicColors.DayNight.NoActionBar">
<item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLightStatusBar">false</item> <item name="android:windowLightStatusBar">false</item>
<item name="tabStyle">@style/Widget.App.TabLayout</item> <item name="tabStyle">@style/Widget.App.TabLayout</item>
+2 -2
View File
@@ -8,7 +8,7 @@
<item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item>
</style> </style>
<style name="Base.AppTheme" parent="Theme.Material3.DynamicColors.DayNight.NoActionBar"> <style name="Base.AppTheme" parent="Theme.Material3Expressive.DynamicColors.DayNight.NoActionBar">
<item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLightStatusBar">true</item> <item name="android:windowLightStatusBar">true</item>
<item name="tabStyle">@style/Widget.App.TabLayout</item> <item name="tabStyle">@style/Widget.App.TabLayout</item>
@@ -17,7 +17,7 @@
<item name="chipStyle">@style/Widget.Material3.Chip.Filter</item> <item name="chipStyle">@style/Widget.Material3.Chip.Filter</item>
</style> </style>
<style name="Theme.Base.Dycolors" parent="Theme.Material3.DynamicColors.DayNight.NoActionBar"> <style name="Theme.Base.Dycolors" parent="Theme.Material3Expressive.DynamicColors.DayNight.NoActionBar">
</style> </style>
+2
View File
@@ -46,3 +46,5 @@ CronetMainVersion=128.0.0.0
android.injected.testOnly=false android.injected.testOnly=false
android.nonFinalResIds=true android.nonFinalResIds=true
android.injected.androidTest.leaveApksInstalledAfterRun=true android.injected.androidTest.leaveApksInstalledAfterRun=true
+9 -9
View File
@@ -1,23 +1,23 @@
[versions] [versions]
datastorePreferences = "1.0.0" datastorePreferences = "1.1.7"
kotlin = "2.1.21" kotlin = "2.1.21"
ksp = "2.1.21-2.0.1" ksp = "2.1.21-2.0.1"
agp = "8.10.1" agp = "8.10.1"
appcompat = "1.7.0" appcompat = "1.7.1"
colorpicker = "1.1.0" colorpicker = "1.1.0"
commonsText = "1.13.1" commonsText = "1.13.1"
constraintlayout = "2.2.1" constraintlayout = "2.2.1"
core = "1.16.0" core = "1.16.0"
firebaseBom = "33.2.0" firebaseBom = "34.0.0"
flexbox = "3.0.0" flexbox = "3.0.0"
fragment = "1.8.7" fragment = "1.8.8"
#不要更新版本 #不要更新版本
hutool = "5.8.22" hutool = "5.8.22"
libarchive = "1.1.5" libarchive = "1.1.5"
lifecycle = "2.9.0" lifecycle = "2.9.2"
glide = "4.16.0" glide = "4.16.0"
gson = "2.13.1" gson = "2.13.1"
jsonPath = "2.9.0" jsonPath = "2.9.0"
@@ -28,16 +28,16 @@ jsoupxpath = "2.5.3"
coroutines = "1.10.2" coroutines = "1.10.2"
liveeventbus = "1.8.14" liveeventbus = "1.8.14"
markwon = "4.6.2" markwon = "4.6.2"
material = "1.12.0" material = "1.14.0-alpha03"
media = "1.7.0" media = "1.7.0"
media3 = "1.6.1" media3 = "1.7.1"
nanoHttpd = "2.3.1" nanoHttpd = "2.3.1"
okhttp = "4.12.0" okhttp = "4.12.0"
palette = "1.0.0" palette = "1.0.0"
preference = "1.2.1" preference = "1.2.1"
protobufJavalite = "4.26.1" protobufJavalite = "4.26.1"
quickChineseTransfer = "0.2.16" quickChineseTransfer = "0.2.16"
room = "2.7.1" room = "2.7.2"
splitties = "3.0.0" splitties = "3.0.0"
rhino = "1.8.0" rhino = "1.8.0"
desugar = "2.1.5" desugar = "2.1.5"
@@ -49,7 +49,7 @@ swiperefreshlayout = "1.1.0"
recyclerview = "1.2.0" recyclerview = "1.2.0"
#noinspection GradleDependency #noinspection GradleDependency
viewpager2 = "1.0.0" viewpager2 = "1.0.0"
webkit = "1.13.0" webkit = "1.14.0"
collection = "1.5.0" collection = "1.5.0"
zxingLite = "3.2.0" zxingLite = "3.2.0"