新增漫画阅读模式[条漫、日漫等]

新增条漫侧边留白功能
更新滤镜功能,现在支持亮度跟随系统
其他界面更新
This commit is contained in:
HapeLee committed 2025-07-21 03:25:18 +08:00
1 parent c35177715c
commit 1701285d33
24 files changed
+585 -277

No files matched your search

+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M200,700Q226,700 243,683Q260,666 260,640Q260,614 243,597Q226,580 200,580Q174,580 157,597Q140,614 140,640Q140,666 157,683Q174,700 200,700ZM360,520Q377,520 388.5,508.5Q400,497 400,480Q400,463 388.5,451.5Q377,440 360,440Q343,440 331.5,451.5Q320,463 320,480Q320,497 331.5,508.5Q343,520 360,520ZM360,360Q377,360 388.5,348.5Q400,337 400,320Q400,303 388.5,291.5Q377,280 360,280Q343,280 331.5,291.5Q320,303 320,320Q320,337 331.5,348.5Q343,360 360,360ZM120,840L120,760L840,760L840,840L120,840ZM200,380Q226,380 243,363Q260,346 260,320Q260,294 243,277Q226,260 200,260Q174,260 157,277Q140,294 140,320Q140,346 157,363Q174,380 200,380ZM200,540Q226,540 243,523Q260,506 260,480Q260,454 243,437Q226,420 200,420Q174,420 157,437Q140,454 140,480Q140,506 157,523Q174,540 200,540ZM360,680Q377,680 388.5,668.5Q400,657 400,640Q400,623 388.5,611.5Q377,600 360,600Q343,600 331.5,611.5Q320,623 320,640Q320,657 331.5,668.5Q343,680 360,680ZM680,660Q689,660 694.5,654.5Q700,649 700,640Q700,631 694.5,625.5Q689,620 680,620Q671,620 665.5,625.5Q660,631 660,640Q660,649 665.5,654.5Q671,660 680,660ZM120,200L120,120L840,120L840,200L120,200ZM680,340Q689,340 694.5,334.5Q700,329 700,320Q700,311 694.5,305.5Q689,300 680,300Q671,300 665.5,305.5Q660,311 660,320Q660,329 665.5,334.5Q671,340 680,340ZM680,500Q689,500 694.5,494.5Q700,489 700,480Q700,471 694.5,465.5Q689,460 680,460Q671,460 665.5,465.5Q660,471 660,480Q660,489 665.5,494.5Q671,500 680,500ZM520,360Q537,360 548.5,348.5Q560,337 560,320Q560,303 548.5,291.5Q537,280 520,280Q503,280 491.5,291.5Q480,303 480,320Q480,337 491.5,348.5Q503,360 520,360ZM520,520Q537,520 548.5,508.5Q560,497 560,480Q560,463 548.5,451.5Q537,440 520,440Q503,440 491.5,451.5Q480,463 480,480Q480,497 491.5,508.5Q503,520 520,520ZM520,680Q537,680 548.5,668.5Q560,657 560,640Q560,623 548.5,611.5Q537,600 520,600Q503,600 491.5,611.5Q480,623 480,640Q480,657 491.5,668.5Q503,680 520,680ZM120,760L120,760L120,200L120,200L120,760Z" />
</vector>
+8 -7
View File
@@ -8,7 +8,8 @@
<io.legato.kazusa.ui.book.manga.recyclerview.WebtoonFrame
android:id="@+id/webtoon_frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="@color/black">
<io.legato.kazusa.ui.book.manga.recyclerview.WebtoonRecyclerView
android:id="@+id/recycler_view"
@@ -48,20 +49,19 @@
android:gravity="center"
android:orientation="vertical">
<ProgressBar
<com.google.android.material.progressindicator.CircularProgressIndicator
style="@style/Widget.Material3.CircularProgressIndicator.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
app:indicatorSize="36dp"
app:trackCornerRadius="99dp"
app:trackThickness="3dp" />
app:indicatorSize="40dp" />
<TextView
android:id="@+id/tv_loading_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginTop="8dp"
android:textColor="?attr/colorSurface"
android:text="@string/loading" />
</LinearLayout>
@@ -78,10 +78,11 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<io.legato.kazusa.ui.widget.text.AccentTextView
<com.google.android.material.button.MaterialButton
android:id="@+id/tv_retry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_margin="16dp"
android:text="重新加载"
android:textSize="18sp"
@@ -48,8 +48,8 @@
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:text="@string/footer"
android:textStyle="bold"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
@@ -165,35 +165,10 @@
android:text="2.1%" />
</com.google.android.material.chip.ChipGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<com.google.android.material.chip.Chip
android:id="@+id/chip_autoPage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/enable_auto_page_scroll" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<io.legato.kazusa.ui.widget.SimpleCounterView
android:id="@+id/scv_autoPageSpeed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:max="100"
app:title="翻页速度" />
</LinearLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_color_filter"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
style="@style/Widget.Material3.Button.TonalButton"
app:icon="@drawable/ic_filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/manga_color_filter" />
@@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/rootView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingVertical="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:paddingHorizontal="16dp"
android:paddingVertical="8dp">
<View
android:layout_width="36dp"
android:layout_height="4dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="16dp"
android:background="@drawable/bg_bottom_sheet_handle" />
<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:orientation="vertical"
android:paddingHorizontal="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="8dp"
android:text="阅读模式"
android:textStyle="bold" />
<com.google.android.material.chip.ChipGroup
android:id="@+id/chipGroupScrollMode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:singleLine="false"
app:chipSpacingVertical="0dp"
app:selectionRequired="true"
app:singleSelection="true" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="8dp"
android:text="自动阅读"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<com.google.android.material.chip.Chip
android:id="@+id/chip_autoPage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/enable_auto_page_scroll" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<io.legato.kazusa.ui.widget.SimpleCounterView
android:id="@+id/scv_autoPageSpeed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:max="100"
app:min="1"
app:title="翻页速度" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_webtoon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="16dp"
android:paddingVertical="8dp"
android:text="条漫"
android:textStyle="bold" />
<io.legato.kazusa.ui.widget.DetailSeekBar
android:id="@+id/scv_Padding"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:max="30"
app:title="侧边留白" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="12dp">
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/checkboxDisableClickScroll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/disable_manga_click_scroll" />
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/checkboxDisableMangaScale"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/disable_manga_scale" />
</LinearLayout>
</LinearLayout>
@@ -1,16 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="96dp"
android:layout_height="wrap_content"
android:background="@color/book_ant_10">
<TextView
android:id="@+id/text"
<LinearLayout
android:id="@+id/ll_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@android:color/white"
android:textStyle="bold"
tools:text="上一章节:第一话" />
android:layout_gravity="center_vertical"
android:orientation="vertical"
android:padding="32dp">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:autoSizeTextType="uniform"
android:text="已读完"
android:textColor="?attr/colorSurface"
android:textStyle="bold" />
<TextView
android:id="@+id/textChapter"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:autoSizeTextType="uniform"
android:text="下一章123"
android:textColor="?attr/colorSurface"
android:textSize="22sp"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout>
@@ -21,33 +21,32 @@
android:layout_height="match_parent"
android:background="@color/book_ant_10">
<ProgressBar
<com.google.android.material.progressindicator.CircularProgressIndicator
android:id="@+id/loading"
style="@style/Widget.Material3.CircularProgressIndicator.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.Material3.CircularProgressIndicator"
android:layout_gravity="center"
android:indeterminate="true"
android:indeterminateTint="@color/white"
android:progressTint="@color/white"
app:indicatorColor="@color/white"
app:indicatorSize="36dp"
app:trackCornerRadius="99dp"
app:trackThickness="3dp" />
app:indicatorSize="64dp" />
<Button
<com.google.android.material.button.MaterialButton
android:id="@+id/retry"
style="@style/Widget.Material3.Button.TonalButton"
style="@style/Widget.Material3.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="8dp"
android:text="重新加载"
android:textColor="@color/white"
android:textSize="18sp"
android:textColor="?attr/colorSurfaceVariant"
app:backgroundTint="?attr/colorOnSurface"
app:cornerRadius="12dp"
app:icon="@drawable/ic_refresh"
app:iconSize="24sp"
app:iconTint="?attr/colorSurfaceVariant"
android:visibility="gone"
app:backgroundTint="@color/white"
app:cornerRadius="10dp"
tools:visibility="visible" />
<TextView
@@ -56,9 +55,10 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="0%"
android:textColor="@color/white"
android:textColor="?attr/colorSurfaceVariant"
android:visibility="gone"
tools:visibility="visible" />
</FrameLayout>
</FrameLayout>
@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_marginVertical="4dp"
android:layout_marginVertical="8dp"
android:orientation="vertical">
<LinearLayout
@@ -12,6 +11,7 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="16dp"
android:paddingTop="8dp"
android:paddingBottom="4dp">
@@ -19,10 +19,9 @@
android:id="@+id/tv_seek_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:singleLine="true"
android:text="seek"
tools:ignore="HardcodedText" />
android:textStyle="bold" />
<View
android:layout_width="0dp"
@@ -32,7 +31,6 @@
<com.google.android.material.card.MaterialCardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
app:strokeWidth="0dp"
app:cardBackgroundColor="?attr/colorSurfaceVariant">
<TextView
@@ -47,35 +45,10 @@
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
<com.google.android.material.slider.Slider
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<com.google.android.material.button.MaterialButton
android:id="@+id/iv_seek_reduce"
android:layout_width="48dp"
android:layout_height="48dp"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
android:contentDescription="@string/reduce"
app:icon="@drawable/ic_reduce" />
<io.legato.kazusa.lib.theme.view.ThemeSlider
android:id="@+id/slider"
android:layout_width="0dp"
android:layout_height="25dp"
android:layout_gravity="center_vertical"
app:labelBehavior="gone"
android:layout_weight="4"
android:stepSize="1"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/iv_seek_plus"
android:layout_width="48dp"
android:layout_height="48dp"
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
android:contentDescription="@string/plus"
app:icon="@drawable/ic_add" />
</LinearLayout>
android:stepSize="1" />
</LinearLayout>
-27
View File
@@ -24,33 +24,6 @@
android:title="@string/pre_download"
app:showAsAction="never" />
<item
android:id="@+id/menu_disable_manga_scale"
android:checkable="true"
android:checked="false"
android:title="@string/disable_manga_scale"
app:showAsAction="never" />
<item
android:id="@+id/menu_disable_click_scroll"
android:checkable="true"
android:checked="false"
android:title="@string/disable_manga_click_scroll"
app:showAsAction="never" />
<item
android:id="@+id/menu_enable_auto_scroll"
android:checkable="true"
android:checked="false"
android:title="@string/enable_auto_scroll"
app:showAsAction="never" />
<item
android:id="@+id/menu_enable_horizontal_scroll"
android:checkable="true"
android:checked="false"
android:title="@string/enable_manga_horizontal_scroll"
app:showAsAction="never" />
<item
android:id="@+id/menu_disable_horizontal_animation"
+1 -1
View File
@@ -1194,7 +1194,7 @@
<string name="disable_manga_click_scroll">禁用点击翻页</string>
<string name="enable_auto_page_scroll">开启自动翻页</string>
<string name="manga_auto_page_speed">翻页速度 %s</string>
<string name="enable_auto_scroll">开启滚动</string>
<string name="enable_auto_scroll">开启自动滚动</string>
<string name="manga_footer_config">页脚配置</string>
<string name="setting_manga_auto_page_speed">设置自动翻页速度</string>
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
+1
View File
@@ -80,6 +80,7 @@
<declare-styleable name="DetailSeekBar">
<attr name="title" />
<attr name="max" />
<attr name="min" />
<attr name="isBottomBackground" />
</declare-styleable>