更新界面

增加首次进入引导界面
This commit is contained in:
HapeLee committed 2025-08-27 03:04:46 +08:00
1 parent ab98072ec3
commit 50abb9b552
33 files changed
+684 -307

No files matched your search

@@ -33,6 +33,8 @@
android:id="@+id/refresh_progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:waveAmplitude="8dp"
app:wavelength="80dp"
android:indeterminate="true"
android:visibility="gone">
+54 -60
View File
@@ -1,82 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal">
android:animateLayoutChanges="true"
android:fitsSystemWindows="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/tv_legado"
android:layout_width="wrap_content"
<LinearLayout
android:id="@+id/ll_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintVertical_bias="0.4"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/iv_book">
android:orientation="vertical"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<View
android:id="@+id/vw_title_line"
android:layout_width="6dp"
android:layout_height="0dp"
android:background="@color/md_theme_primary"
app:layout_constraintTop_toTopOf="@+id/tv_title"
app:layout_constraintBottom_toBottomOf="@+id/tv_title"
app:layout_constraintLeft_toLeftOf="parent" />
<ImageView
android:layout_width="56dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="48dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_launcher_foreground" />
<io.legato.kazusa.ui.widget.text.AccentTextView
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:ems="1"
android:text="阅读"
android:textSize="49sp"
app:layout_constraintRight_toLeftOf="@+id/tv_sub_title"
app:layout_constraintLeft_toRightOf="@+id/vw_title_line"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText,RtlHardcoded" />
android:layout_marginHorizontal="16dp"
android:text="欢迎!"
android:textSize="36sp"
android:textStyle="bold" />
<io.legato.kazusa.ui.widget.text.AccentTextView
android:id="@+id/tv_sub_title"
android:layout_width="wrap_content"
<TextView
android:id="@+id/tv_summary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:layout_marginLeft="6dp"
android:ems="1"
android:text="享受美好时光"
android:textSize="16sp"
app:layout_constraintTop_toTopOf="@+id/tv_title"
app:layout_constraintLeft_toRightOf="@id/tv_title"
tools:ignore="HardcodedText,RtlHardcoded" />
android:layout_marginHorizontal="16dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="16dp"
android:text="请先阅读应用的服务条款与用户协议。"
android:textStyle="bold" />
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:indicatorColor="?attr/colorSecondary"
app:waveAmplitude="4dp"
app:waveSpeed="32dp"
app:wavelength="80dp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
app:layout_constraintBottom_toTopOf="@id/btnNext"
app:layout_constraintTop_toBottomOf="@id/ll_info" />
<ImageView
android:id="@+id/iv_book"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginBottom="32dp"
android:src="@drawable/icon_read_book"
android:scaleType="fitCenter"
android:contentDescription="@string/welcome"
app:layout_constraintBottom_toTopOf="@+id/tv_gzh"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<io.legato.kazusa.ui.widget.text.AccentTextView
android:id="@+id/tv_gzh"
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
android:id="@+id/btnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关注公众号[开源阅读]\n看文章点广告支持作者"
android:layout_marginBottom="32dp"
android:gravity="center_horizontal"
android:layout_gravity="end"
android:layout_margin="16dp"
android:text="@string/text"
app:icon="@drawable/ic_arrow_right"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
tools:ignore="HardcodedText" />
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
+59 -55
View File
@@ -50,66 +50,70 @@
app:layout_constraintTop_toBottomOf="@id/tv_name_title"
tools:text="文字" />
<com.google.android.material.button.MaterialButton
android:id="@+id/iv_edit"
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
<com.google.android.material.button.MaterialButtonGroup
android:id="@+id/mbg_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:contentDescription="@string/edit"
app:iconGravity="textStart"
app:icon="@drawable/ic_edit"
app:layout_constraintBottom_toBottomOf="@id/tv_name"
app:layout_constraintEnd_toStartOf="@id/iv_delete"
app:layout_constraintTop_toTopOf="@id/tv_name" />
<com.google.android.material.button.MaterialButton
android:id="@+id/iv_delete"
style="@style/Widget.Material3Expressive.Button.IconButton.Outlined"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/delete"
app:icon="@drawable/ic_clear_all"
app:layout_constraintBottom_toBottomOf="@id/iv_edit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_edit"
tools:ignore="UnusedAttribute" />
app:layout_constraintTop_toTopOf="@id/tv_name">
<com.google.android.material.button.MaterialButton
android:id="@+id/tv_restore"
android:layout_width="wrap_content"
style="@style/Widget.Material3Expressive.Button.OutlinedButton"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:text="@string/restore"
app:icon="@drawable/ic_restore"
app:layout_constraintEnd_toStartOf="@id/iv_import"
app:layout_constraintTop_toBottomOf="@id/iv_edit" />
<com.google.android.material.button.MaterialButton
android:id="@+id/iv_edit"
style="@style/Widget.Material3Expressive.Button.IconButton.Tonal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/edit"
app:icon="@drawable/ic_edit"
app:iconGravity="textStart" />
<com.google.android.material.button.MaterialButton
android:id="@+id/iv_import"
style="@style/Widget.Material3Expressive.Button.OutlinedButton"
<com.google.android.material.button.MaterialButton
android:id="@+id/iv_delete"
style="@style/Widget.Material3Expressive.Button.IconButton.Outlined"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/delete"
app:icon="@drawable/ic_clear_all"
tools:ignore="UnusedAttribute" />
</com.google.android.material.button.MaterialButtonGroup>
<com.google.android.material.button.MaterialButtonGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:contentDescription="@string/import_str"
android:text="@string/import_str"
app:icon="@drawable/ic_import"
app:layout_constraintBottom_toBottomOf="@id/tv_restore"
app:layout_constraintEnd_toStartOf="@id/iv_export"
app:layout_constraintTop_toTopOf="@id/tv_restore" />
<com.google.android.material.button.MaterialButton
android:id="@+id/iv_export"
style="@style/Widget.Material3Expressive.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/import_str"
android:text="@string/export_str"
app:icon="@drawable/ic_export"
app:layout_constraintBottom_toBottomOf="@id/iv_import"
android:layout_marginEnd="2dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/iv_import" />
app:layout_constraintTop_toBottomOf="@id/mbg_1">
<com.google.android.material.button.MaterialButton
android:id="@+id/tv_restore"
style="@style/Widget.Material3Expressive.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/restore"
app:icon="@drawable/ic_restore" />
<com.google.android.material.button.MaterialButton
android:id="@+id/iv_import"
style="@style/Widget.Material3Expressive.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/import_str"
android:text="@string/import_str"
app:icon="@drawable/ic_import" />
<com.google.android.material.button.MaterialButton
android:id="@+id/iv_export"
style="@style/Widget.Material3Expressive.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/import_str"
android:text="@string/export_str"
app:icon="@drawable/ic_export" />
</com.google.android.material.button.MaterialButtonGroup>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -129,7 +133,7 @@
android:text="@string/text_underline"
tools:ignore="TouchTargetSizeCheck" />
<LinearLayout
<com.google.android.material.button.MaterialButtonGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
@@ -141,7 +145,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.Material3Expressive.Button.TonalButton"
android:layout_marginEnd="16dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
app:icon="@drawable/ic_palette"
android:text="@string/text_color"
@@ -159,7 +163,7 @@
android:text="@string/bg_color"
app:cornerRadius="12dp" />
</LinearLayout>
</com.google.android.material.button.MaterialButtonGroup>
<TextView
android:id="@+id/tv_bg_alpha"
@@ -189,7 +193,7 @@
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:paddingVertical="8dp"
android:layout_height="100dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_bg_image" />
@@ -272,45 +272,37 @@
<com.google.android.material.chip.Chip
android:id="@+id/rb_anim0"
style="@style/Widget.Material3.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:text="@string/page_anim_cover" />
<!-- 滑动动画 Chip -->
<com.google.android.material.chip.Chip
android:id="@+id/rb_anim1"
style="@style/Widget.Material3.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:checkable="true"
android:text="@string/page_anim_slide" />
<!-- 仿真翻页 Chip -->
<com.google.android.material.chip.Chip
android:id="@+id/rb_simulation_anim"
style="@style/Widget.Material3.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:checkable="true"
android:text="@string/page_anim_simulation" />
<!-- 滚动动画 Chip -->
<com.google.android.material.chip.Chip
android:id="@+id/rb_scroll_anim"
style="@style/Widget.Material3.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:checkable="true"
android:text="@string/page_anim_scroll" />
<!-- 无动画 Chip -->
<com.google.android.material.chip.Chip
android:id="@+id/rb_no_anim"
style="@style/Widget.Material3.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:checkable="true"
android:text="@string/page_anim_none" />
</com.google.android.material.chip.ChipGroup>
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingHorizontal="16dp">
<LinearLayout
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:layout_marginBottom="8dp"
android:text="@string/privacy_policy"
android:textColor="?attr/colorSecondary"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvPrivacy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:text="@string/text" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:text="@string/disclaimer"
android:textColor="?attr/colorSecondary"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvDisclaimer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
@@ -0,0 +1,97 @@
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingHorizontal="16dp">
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:hint="@string/web_dav_url">
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/editUrl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
android:imeOptions="actionDone"
android:inputType="textUri" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:hint="@string/web_dav_account">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editAccount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/set_local_password" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:hint="@string/web_dav_pw"
app:endIconMode="password_toggle">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/set_local_password" />
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnRestore"
style="@style/Widget.Material3Expressive.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_weight="2"
android:text="获取备份" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnCheck"
style="@style/Widget.Material3Expressive.Button.TonalButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/action_save" />
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/set_local_password_summary"
android:textSize="12sp" />
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.Material3.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/set_local_password">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
@@ -7,6 +7,7 @@
android:orientation="vertical">
<com.google.android.material.card.MaterialCardView
android:id="@+id/cd_image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
@@ -104,6 +104,8 @@
style="@style/Widget.Material3.LinearProgressIndicator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:waveAmplitude="8dp"
app:wavelength="80dp"
android:layout_marginTop="2dp"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/iv_download" />
@@ -1,5 +1,6 @@
<?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/ll_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -9,6 +10,8 @@
android:id="@+id/cd_style"
android:layout_width="48dp"
android:layout_height="48dp"
app:strokeColor="?attr/colorOutlineVariant"
app:strokeWidth="2dp"
android:layout_margin="4dp"
android:foreground="?android:attr/selectableItemBackground">
+1
View File
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/widget_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
+5 -5
View File
@@ -4,16 +4,16 @@
android:id="@+id/theme_toggle_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:spacing="2dp"
app:innerCornerSize="8dp"
android:layout_marginHorizontal="16dp"
android:layout_marginVertical="8dp"
android:gravity="center"
app:singleSelection="true"
app:selectionRequired="true">
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_system"
style="@style/Widget.Material3Expressive.Button"
style="@style/Widget.Material3Expressive.Button.OutlinedButton"
app:checkedIcon="@drawable/ic_check"
android:checkable="true"
android:layout_width="0dp"
@@ -23,7 +23,7 @@
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_light"
style="@style/Widget.Material3Expressive.Button"
style="@style/Widget.Material3Expressive.Button.OutlinedButton"
app:checkedIcon="@drawable/ic_check"
android:checkable="true"
android:layout_width="0dp"
@@ -33,7 +33,7 @@
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_dark"
style="@style/Widget.Material3Expressive.Button"
style="@style/Widget.Material3Expressive.Button.OutlinedButton"
app:checkedIcon="@drawable/ic_check"
android:checkable="true"
android:layout_width="0dp"