This commit is contained in:
HapeLee
2025-06-06 13:36:57 +08:00
parent 6ed3ef9566
commit 588ac40282
15 changed files with 235 additions and 111 deletions
@@ -6,22 +6,23 @@ import io.legato.kazusa.base.adapter.ItemViewHolder
import io.legato.kazusa.base.adapter.RecyclerAdapter
import io.legato.kazusa.data.entities.Book
import io.legato.kazusa.databinding.ItemFilletTextBinding
import io.legato.kazusa.databinding.ItemSearchHistoryBinding
class BookAdapter(context: Context, val callBack: CallBack) :
RecyclerAdapter<Book, ItemFilletTextBinding>(context) {
RecyclerAdapter<Book, ItemSearchHistoryBinding>(context) {
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getViewBinding(parent: ViewGroup): ItemFilletTextBinding {
return ItemFilletTextBinding.inflate(inflater, parent, false)
override fun getViewBinding(parent: ViewGroup): ItemSearchHistoryBinding {
return ItemSearchHistoryBinding.inflate(inflater, parent, false)
}
override fun convert(
holder: ItemViewHolder,
binding: ItemFilletTextBinding,
binding: ItemSearchHistoryBinding,
item: Book,
payloads: MutableList<Any>
) {
@@ -30,7 +31,7 @@ class BookAdapter(context: Context, val callBack: CallBack) :
}
}
override fun registerListener(holder: ItemViewHolder, binding: ItemFilletTextBinding) {
override fun registerListener(holder: ItemViewHolder, binding: ItemSearchHistoryBinding) {
holder.itemView.apply {
setOnClickListener {
getItem(holder.layoutPosition)?.let {
@@ -5,11 +5,12 @@ import io.legato.kazusa.base.adapter.ItemViewHolder
import io.legato.kazusa.base.adapter.RecyclerAdapter
import io.legato.kazusa.data.entities.SearchKeyword
import io.legato.kazusa.databinding.ItemFilletTextBinding
import io.legato.kazusa.databinding.ItemSearchHistoryBinding
import io.legato.kazusa.ui.widget.anima.explosion_field.ExplosionField
import splitties.views.onLongClick
class HistoryKeyAdapter(activity: SearchActivity, val callBack: CallBack) :
RecyclerAdapter<SearchKeyword, ItemFilletTextBinding>(activity) {
RecyclerAdapter<SearchKeyword, ItemSearchHistoryBinding>(activity) {
private val explosionField = ExplosionField.attach2Window(activity)
@@ -17,13 +18,13 @@ class HistoryKeyAdapter(activity: SearchActivity, val callBack: CallBack) :
return position.toLong()
}
override fun getViewBinding(parent: ViewGroup): ItemFilletTextBinding {
return ItemFilletTextBinding.inflate(inflater, parent, false)
override fun getViewBinding(parent: ViewGroup): ItemSearchHistoryBinding {
return ItemSearchHistoryBinding.inflate(inflater, parent, false)
}
override fun convert(
holder: ItemViewHolder,
binding: ItemFilletTextBinding,
binding: ItemSearchHistoryBinding,
item: SearchKeyword,
payloads: MutableList<Any>
) {
@@ -32,7 +33,7 @@ class HistoryKeyAdapter(activity: SearchActivity, val callBack: CallBack) :
}
}
override fun registerListener(holder: ItemViewHolder, binding: ItemFilletTextBinding) {
override fun registerListener(holder: ItemViewHolder, binding: ItemSearchHistoryBinding) {
holder.itemView.apply {
setOnClickListener {
getItemByLayoutPosition(holder.layoutPosition)?.let {
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="2dp" />
<solid android:color="#CCCCCC" />
</shape>
+2 -2
View File
@@ -19,8 +19,8 @@
android:layout_height="wrap_content"
android:background="@drawable/shape_card_view"
android:orientation="vertical"
android:layout_margin="6dp"
android:padding="10dp">
android:layout_margin="16dp"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
@@ -46,7 +46,7 @@
android:clickable="true"
android:focusable="true"
android:orientation="vertical"
android:visibility="gone"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/title_bar">
@@ -54,43 +54,48 @@
android:id="@+id/tv_book_show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="6dp"
android:paddingHorizontal="16dp"
android:paddingVertical="12dp"
android:text="@string/bookshelf"
android:visibility="gone" />
android:visibility="visible" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_bookshelf_search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
android:paddingHorizontal="16dp"
android:paddingVertical="8dp"
android:visibility="visible" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:orientation="horizontal"
android:paddingHorizontal="16dp"
android:paddingVertical="8dp">
<TextView
android:id="@+id/tv_history"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="6dp"
android:text="@string/searchHistory" />
<TextView
android:id="@+id/tv_clear_history"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="6dp"
android:text="@string/clear" />
android:layout_gravity="center_vertical"
android:text="@string/searchHistory" />
<com.google.android.material.button.MaterialButton
android:id="@+id/tv_clear_history"
android:layout_width="36dp"
android:layout_height="36dp"
style="@style/Widget.Material3.Button.IconButton.Outlined"
app:iconGravity="textStart"
app:icon="@drawable/ic_clear_all" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_history_key"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
android:paddingHorizontal="12dp" />
</LinearLayout>
@@ -32,11 +32,9 @@
android:id="@+id/ll_search_base_info"
android:layout_width="match_parent"
android:layout_height="36dp"
android:elevation="5dp"
android:layout_marginHorizontal="16dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="10dp"
android:paddingRight="10dp"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
@@ -47,8 +45,6 @@
android:background="?android:attr/selectableItemBackgroundBorderless"
android:ellipsize="middle"
android:gravity="center_vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:singleLine="true"
android:textSize="12sp" />
+101 -47
View File
@@ -4,14 +4,23 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:paddingHorizontal="16dp"
android:paddingVertical="8dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="8dp"
android:orientation="vertical">
<View
android:layout_width="36dp"
android:layout_height="4dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/bg_bottom_sheet_handle"
android:layout_marginBottom="16dp" />
<LinearLayout
android:id="@+id/ll_tts_SpeechRate"
android:layout_width="match_parent"
@@ -52,61 +61,106 @@
android:layout_marginTop="8dp"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_catalog"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:icon="@drawable/ic_toc"
android:text="@string/chapter_list"
android:textSize="12sp"
android:padding="0dp"
app:iconGravity="textTop"
app:iconPadding="4dp"
/>
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_main_menu"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:icon="@drawable/ic_menu"
android:text="@string/main_menu"
android:textSize="12sp"
android:padding="0dp"
app:iconGravity="textTop"
app:iconPadding="4dp"
/>
android:orientation="vertical"
android:gravity="center_horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_auto_page_stop"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:icon="@drawable/ic_auto_page_stop"
android:text="@string/stop"
android:textSize="12sp"
android:padding="0dp"
app:iconGravity="textTop"
app:iconPadding="4dp"
/>
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_catalog"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
android:layout_width="64dp"
android:layout_height="48dp"
app:icon="@drawable/ic_toc"
android:textSize="12sp"
android:padding="0dp"
app:iconGravity="textTop"
app:iconPadding="4dp" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_setting"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/chapter_list"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:icon="@drawable/ic_settings"
android:text="@string/setting"
android:textSize="12sp"
android:padding="0dp"
app:iconGravity="textTop"
app:iconPadding="4dp"
/>
android:orientation="vertical"
android:gravity="center_horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_main_menu"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
android:layout_width="64dp"
android:layout_height="48dp"
app:icon="@drawable/ic_menu"
android:textSize="12sp"
android:padding="0dp"
app:iconGravity="textTop"
app:iconPadding="4dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/main_menu"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center_horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_auto_page_stop"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
android:layout_width="64dp"
android:layout_height="48dp"
app:icon="@drawable/ic_auto_page_stop"
android:padding="0dp"
app:iconGravity="textTop"
app:iconPadding="0dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stop"
android:textColor="?attr/colorOnSurface" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center_horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_setting"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
android:layout_width="64dp"
android:layout_height="48dp"
app:icon="@drawable/ic_settings"
android:padding="0dp"
app:iconGravity="textTop"
app:iconPadding="0dp"
android:text="" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/setting" />
</LinearLayout>
</LinearLayout>
+27 -4
View File
@@ -6,10 +6,33 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingTop="6dp"
android:paddingRight="16dp"
android:paddingBottom="6dp">
android:paddingHorizontal="16dp"
android:paddingVertical="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:paddingVertical="8dp"
android:paddingHorizontal="16dp">
<View
android:layout_width="36dp"
android:layout_height="4dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/bg_bottom_sheet_handle"
android:layout_marginBottom="16dp" />
<TextView
android:id="@+id/bottom_sheet_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="朗读设置"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@@ -7,20 +7,34 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_marginTop="16dp"
android:text="界面设置"
style="@style/TextAppearance.Material3.TitleLarge">
android:paddingVertical="16dp"
android:paddingHorizontal="16dp">
</TextView>
<View
android:layout_width="36dp"
android:layout_height="4dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/bg_bottom_sheet_handle"
android:layout_marginBottom="16dp" />
<TextView
android:id="@+id/bottom_sheet_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="界面设置"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_marginHorizontal="16dp" >
@@ -30,14 +44,12 @@
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/font_weight_text" />
<com.google.android.material.button.MaterialButton
android:id="@+id/tv_text_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.Material3.Button.TonalButton"
android:text="@string/text_font" />
@@ -45,7 +57,6 @@
android:id="@+id/tv_text_indent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.Material3.Button.TonalButton"
android:text="@string/text_indent" />
@@ -54,7 +65,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginTop="8dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_marginHorizontal="16dp" >
@@ -124,7 +135,7 @@
<View
android:id="@+id/vw_bg_fg"
android:layout_width="match_parent"
android:layout_height="0.8dp"
android:layout_height="1dp"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="8dp"
android:background="@color/btn_bg_press" />
@@ -135,21 +146,19 @@
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginBottom="4dp"
android:alpha="0.75"
android:text="@string/page_anim"
android:textSize="12sp" />
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="11dp"
android:scrollbars="none">
<com.google.android.material.chip.ChipGroup
android:id="@+id/rg_page_anim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingEnd="11dp"
android:paddingHorizontal="16dp"
app:singleLine="true"
app:singleSelection="true"
app:selectionRequired="true">
@@ -159,7 +168,6 @@
style="@style/Widget.Material3.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:text="@string/page_anim_cover"
/>
@@ -209,7 +217,7 @@
<View
android:id="@+id/vw_bg_fg1"
android:layout_width="match_parent"
android:layout_height="0.8dp"
android:layout_height="1dp"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="8dp"
android:background="@color/btn_bg_press" />
@@ -11,7 +11,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorSurface"
android:fitsSystemWindows="true">
android:fitsSystemWindows="true"
app:liftOnScroll="false"
android:stateListAnimator="@null">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
@@ -19,6 +21,8 @@
style="?attr/collapsingToolbarLayoutLargeSize"
app:collapsedTitleTextAppearance="?attr/textAppearanceTitleLarge"
app:expandedTitleTextAppearance="?attr/textAppearanceHeadlineLarge"
app:contentScrim="?attr/colorSurface"
app:titleCollapseMode="scale"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
<com.google.android.material.appbar.MaterialToolbar
@@ -34,9 +38,8 @@
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="16dp"
android:background="?attr/colorSurface"
tools:ignore="RtlSymmetry" />
android:paddingHorizontal="16dp"/>
</com.google.android.material.appbar.AppBarLayout>
<!-- ViewPager -->
@@ -33,6 +33,7 @@
android:id="@+id/search_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorSurface"
android:layout_marginHorizontal="16dp"
android:hint="@string/search_rss_source"
app:layout_constraintTop_toTopOf="parent" />
@@ -17,6 +17,8 @@
style="?attr/collapsingToolbarLayoutLargeSize"
app:collapsedTitleTextAppearance="?attr/textAppearanceTitleLarge"
app:expandedTitleTextAppearance="?attr/textAppearanceHeadlineLarge"
app:contentScrim="?attr/colorSurface"
app:titleCollapseMode="scale"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
<com.google.android.material.appbar.MaterialToolbar
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rootView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_margin="2dp"
android:paddingHorizontal="16dp"
android:paddingVertical="8dp"
android:background="@drawable/selector_fillet_btn_bg"
android:gravity="center"
android:clickable="true"
android:focusable="true"
android:minHeight="36dp"
android:backgroundTint="?attr/colorSurfaceContainer"
android:clipToPadding="false"
android:clipChildren="false">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关键词"
android:textSize="14sp"
android:textColor="?attr/colorOnSurface"
android:maxLines="1"
android:ellipsize="end"
android:paddingHorizontal="4dp" />
</LinearLayout>
-6
View File
@@ -74,7 +74,6 @@
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLightStatusBar">true</item>
<item name="tabStyle">@style/Widget.App.TabLayout</item>
<item name="collapsingToolbarLayoutStyle">@style/CollapsingToolbar</item>
</style>
<style name="Widget.App.TabLayout" parent="Widget.Material3.TabLayout">
@@ -113,11 +112,6 @@
<item name="android:windowLightStatusBar">false</item>
</style>
<style name="CollapsingToolbar" parent="Widget.Material3.CollapsingToolbar">
<item name="titleCollapseMode">scale</item>
<item name="contentScrim">?attr/colorSurface</item>
</style>
<style name="ChapterNameText">
<item name="android:textSize">16sp</item>
<item name="android:textStyle">bold</item>
+1 -1
View File
@@ -3,7 +3,7 @@
datastorePreferences = "1.0.0"
kotlin = "2.1.21"
ksp = "2.1.21-2.0.1"
agp = "8.10.0"
agp = "8.10.1"
appcompat = "1.7.0"
colorpicker = "1.1.0"
commonsText = "1.13.1"