增加平板界面配置,更新主页面
This commit is contained in:
@@ -209,8 +209,8 @@ object PreferKey {
|
|||||||
|
|
||||||
const val delayBookLoadEnable = "delayBookLoadEnable"
|
const val delayBookLoadEnable = "delayBookLoadEnable"
|
||||||
const val sharedElementEnterTransitionEnable = "sharedElementEnterTransitionEnable"
|
const val sharedElementEnterTransitionEnable = "sharedElementEnterTransitionEnable"
|
||||||
|
|
||||||
const val bookshelfLayoutGridLandscape = "bookshelfLayoutGridLandscape"
|
const val bookshelfLayoutGridLandscape = "bookshelfLayoutGridLandscape"
|
||||||
|
|
||||||
const val bookshelfLayoutGridPortrait = "bookshelfLayoutGridPortrait"
|
const val bookshelfLayoutGridPortrait = "bookshelfLayoutGridPortrait"
|
||||||
|
|
||||||
|
const val tabletInterface = "tabletInterface"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -808,5 +808,11 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
|||||||
appCtx.putPrefBoolean(PreferKey.mangaVolumeKeyPage, value)
|
appCtx.putPrefBoolean(PreferKey.mangaVolumeKeyPage, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var tabletInterface
|
||||||
|
get() = appCtx.getPrefString(PreferKey.tabletInterface, "auto")
|
||||||
|
set(value) {
|
||||||
|
appCtx.putPrefString(PreferKey.tabletInterface, value)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -158,6 +158,10 @@ class ThemeConfigFragment : PreferenceFragmentCompat(),
|
|||||||
PreferKey.bgImageN -> {
|
PreferKey.bgImageN -> {
|
||||||
upPreferenceSummary(key, getPrefString(key))
|
upPreferenceSummary(key, getPrefString(key))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PreferKey.tabletInterface -> {
|
||||||
|
recreateActivities()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,16 @@ package io.legato.kazusa.ui.main
|
|||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.format.DateUtils
|
import android.text.format.DateUtils
|
||||||
|
import android.view.Gravity
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.widget.FrameLayout
|
||||||
|
import android.widget.ImageView
|
||||||
import androidx.activity.addCallback
|
import androidx.activity.addCallback
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.core.view.get
|
import androidx.core.view.get
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import androidx.core.view.postDelayed
|
import androidx.core.view.postDelayed
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
@@ -18,6 +22,7 @@ import androidx.fragment.app.FragmentStatePagerAdapter
|
|||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.viewpager.widget.ViewPager
|
import androidx.viewpager.widget.ViewPager
|
||||||
import com.google.android.material.bottomnavigation.BottomNavigationView
|
import com.google.android.material.bottomnavigation.BottomNavigationView
|
||||||
|
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
|
||||||
import com.google.android.material.navigation.NavigationBarView
|
import com.google.android.material.navigation.NavigationBarView
|
||||||
import io.legato.kazusa.BuildConfig
|
import io.legato.kazusa.BuildConfig
|
||||||
import io.legato.kazusa.R
|
import io.legato.kazusa.R
|
||||||
@@ -35,6 +40,7 @@ import io.legato.kazusa.help.storage.Backup
|
|||||||
import io.legato.kazusa.lib.dialogs.alert
|
import io.legato.kazusa.lib.dialogs.alert
|
||||||
import io.legato.kazusa.service.BaseReadAloudService
|
import io.legato.kazusa.service.BaseReadAloudService
|
||||||
import io.legato.kazusa.ui.about.CrashLogsDialog
|
import io.legato.kazusa.ui.about.CrashLogsDialog
|
||||||
|
import io.legato.kazusa.ui.book.search.SearchActivity
|
||||||
import io.legato.kazusa.ui.main.bookshelf.BaseBookshelfFragment
|
import io.legato.kazusa.ui.main.bookshelf.BaseBookshelfFragment
|
||||||
import io.legato.kazusa.ui.main.bookshelf.books.BookshelfFragment1
|
import io.legato.kazusa.ui.main.bookshelf.books.BookshelfFragment1
|
||||||
import io.legato.kazusa.ui.main.bookshelf.books.BookshelfFragment2
|
import io.legato.kazusa.ui.main.bookshelf.books.BookshelfFragment2
|
||||||
@@ -44,9 +50,9 @@ import io.legato.kazusa.ui.main.my.MyFragment
|
|||||||
import io.legato.kazusa.ui.main.rss.RssFragment
|
import io.legato.kazusa.ui.main.rss.RssFragment
|
||||||
import io.legato.kazusa.ui.welcome.WelcomeActivity
|
import io.legato.kazusa.ui.welcome.WelcomeActivity
|
||||||
import io.legato.kazusa.ui.widget.dialog.TextDialog
|
import io.legato.kazusa.ui.widget.dialog.TextDialog
|
||||||
|
import io.legato.kazusa.utils.dpToPx
|
||||||
import io.legato.kazusa.utils.gone
|
import io.legato.kazusa.utils.gone
|
||||||
import io.legato.kazusa.utils.hideSoftInput
|
import io.legato.kazusa.utils.hideSoftInput
|
||||||
import io.legato.kazusa.utils.isCreated
|
|
||||||
import io.legato.kazusa.utils.observeEvent
|
import io.legato.kazusa.utils.observeEvent
|
||||||
import io.legato.kazusa.utils.setNavigationBarColorAuto
|
import io.legato.kazusa.utils.setNavigationBarColorAuto
|
||||||
import io.legato.kazusa.utils.shouldHideSoftInput
|
import io.legato.kazusa.utils.shouldHideSoftInput
|
||||||
@@ -107,6 +113,10 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
pagePosition = savedInstanceState.getInt("currentPagePosition", 0)
|
||||||
|
}
|
||||||
|
|
||||||
onBackPressedDispatcher.addCallback(this) {
|
onBackPressedDispatcher.addCallback(this) {
|
||||||
if (pagePosition != 0) {
|
if (pagePosition != 0) {
|
||||||
binding.viewPagerMain.currentItem = 0
|
binding.viewPagerMain.currentItem = 0
|
||||||
@@ -133,6 +143,7 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
|||||||
upBottomMenu()
|
upBottomMenu()
|
||||||
initView()
|
initView()
|
||||||
upHomePage()
|
upHomePage()
|
||||||
|
bindNavigationListener()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
|
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
|
||||||
@@ -212,12 +223,6 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
|||||||
viewPagerMain.offscreenPageLimit = 3
|
viewPagerMain.offscreenPageLimit = 3
|
||||||
viewPagerMain.adapter = adapter
|
viewPagerMain.adapter = adapter
|
||||||
viewPagerMain.addOnPageChangeListener(PageChangeCallback())
|
viewPagerMain.addOnPageChangeListener(PageChangeCallback())
|
||||||
getNavigationBarView().apply {
|
|
||||||
setOnItemSelectedListener { onNavigationItemSelected(it) }
|
|
||||||
setOnItemReselectedListener { onNavigationItemReselected(it) }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
window.setNavigationBarColorAuto(themeColor(com.google.android.material.R.attr.colorSurfaceContainer))
|
window.setNavigationBarColorAuto(themeColor(com.google.android.material.R.attr.colorSurfaceContainer))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,6 +292,7 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
|||||||
|
|
||||||
override fun onSaveInstanceState(outState: Bundle) {
|
override fun onSaveInstanceState(outState: Bundle) {
|
||||||
super.onSaveInstanceState(outState)
|
super.onSaveInstanceState(outState)
|
||||||
|
outState.putInt("currentPagePosition", pagePosition)
|
||||||
if (AppConfig.autoRefreshBook) {
|
if (AppConfig.autoRefreshBook) {
|
||||||
outState.putBoolean("isAutoRefreshedBook", true)
|
outState.putBoolean("isAutoRefreshedBook", true)
|
||||||
}
|
}
|
||||||
@@ -333,18 +339,33 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getNavigationBarView(): NavigationBarView {
|
private fun getNavigationBarView(): NavigationBarView {
|
||||||
return findViewById(
|
val tabletInterface = AppConfig.tabletInterface
|
||||||
if (resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT)
|
val orientation = resources.configuration.orientation
|
||||||
R.id.bottom_navigation_view
|
val smallestWidthDp = resources.configuration.smallestScreenWidthDp
|
||||||
else
|
|
||||||
R.id.navigation_rail_view
|
val useRail = when (tabletInterface) {
|
||||||
)
|
"always" -> true
|
||||||
|
"landscape" -> orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||||
|
"off" -> false
|
||||||
|
"auto" -> smallestWidthDp >= 600
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 控制显隐
|
||||||
|
binding.navigationRailView.isVisible = useRail
|
||||||
|
binding.bottomNavigationView.isVisible = !useRail
|
||||||
|
|
||||||
|
return if (useRail) binding.navigationRailView else binding.bottomNavigationView
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun upBottomMenu() {
|
private fun upBottomMenu() {
|
||||||
val menu = getNavigationBarView().menu
|
val navView = getNavigationBarView()
|
||||||
|
val menu = navView.menu
|
||||||
|
|
||||||
menu.findItem(R.id.menu_discovery).isVisible = AppConfig.showDiscovery
|
menu.findItem(R.id.menu_discovery).isVisible = AppConfig.showDiscovery
|
||||||
menu.findItem(R.id.menu_rss).isVisible = AppConfig.showRSS
|
menu.findItem(R.id.menu_rss).isVisible = AppConfig.showRSS
|
||||||
|
|
||||||
var index = 0
|
var index = 0
|
||||||
if (AppConfig.showDiscovery) {
|
if (AppConfig.showDiscovery) {
|
||||||
index++
|
index++
|
||||||
@@ -357,9 +378,65 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
|||||||
index++
|
index++
|
||||||
realPositions[index] = idMy
|
realPositions[index] = idMy
|
||||||
bottomMenuCount = index + 1
|
bottomMenuCount = index + 1
|
||||||
|
|
||||||
adapter.notifyDataSetChanged()
|
adapter.notifyDataSetChanged()
|
||||||
if (AppConfig.showBottomView) getNavigationBarView().visible()
|
|
||||||
else binding.bottomNavigationView?.gone()
|
if (AppConfig.showBottomView) {
|
||||||
|
navView.visible()
|
||||||
|
} else {
|
||||||
|
binding.bottomNavigationView.gone()
|
||||||
|
binding.navigationRailView.gone()
|
||||||
|
}
|
||||||
|
|
||||||
|
val efab =
|
||||||
|
binding.navigationRailView.headerView?.findViewById<ExtendedFloatingActionButton>(R.id.nav_fab)
|
||||||
|
efab?.let { it.isExtended = false }
|
||||||
|
|
||||||
|
val lp =
|
||||||
|
binding.navigationRailView.headerView?.let { it.layoutParams as FrameLayout.LayoutParams }
|
||||||
|
lp!!.gravity = Gravity.START
|
||||||
|
|
||||||
|
binding.navigationRailView.headerView?.setPadding(
|
||||||
|
12.dpToPx(),
|
||||||
|
12.dpToPx(),
|
||||||
|
12.dpToPx(),
|
||||||
|
12.dpToPx()
|
||||||
|
)
|
||||||
|
|
||||||
|
binding.navigationRailView.headerView?.findViewById<ExtendedFloatingActionButton>(R.id.nav_fab)
|
||||||
|
?.setOnClickListener {
|
||||||
|
startActivity<SearchActivity>()
|
||||||
|
}
|
||||||
|
binding.navigationRailView.headerView?.findViewById<ImageView>(R.id.nav_botton)
|
||||||
|
?.setOnClickListener {
|
||||||
|
efab?.let { it1 ->
|
||||||
|
if (it1.isExtended) {
|
||||||
|
efab.isExtended = false
|
||||||
|
binding.navigationRailView.collapse()
|
||||||
|
} else {
|
||||||
|
efab.isExtended = true
|
||||||
|
binding.navigationRailView.expand()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun bindNavigationListener() {
|
||||||
|
val navView = getNavigationBarView()
|
||||||
|
navView.setOnItemSelectedListener { onNavigationItemSelected(it) }
|
||||||
|
navView.setOnItemReselectedListener { onNavigationItemReselected(it) }
|
||||||
|
binding.viewPagerMain.post {
|
||||||
|
binding.viewPagerMain.setCurrentItem(pagePosition, false)
|
||||||
|
getNavigationBarView().menu[pagePosition].isChecked = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateNavigationRailFab(position: Int) {
|
||||||
|
binding.navigationRailView.headerView?.gone()
|
||||||
|
val fragmentId = getFragmentId(position)
|
||||||
|
if (fragmentId == idBookshelf1 || fragmentId == idBookshelf2 || fragmentId == idBookshelf3) {
|
||||||
|
binding.navigationRailView.headerView?.visible()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun upHomePage() {
|
private fun upHomePage() {
|
||||||
@@ -397,7 +474,9 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
|||||||
|
|
||||||
override fun onPageSelected(position: Int) {
|
override fun onPageSelected(position: Int) {
|
||||||
pagePosition = position
|
pagePosition = position
|
||||||
getNavigationBarView().menu[realPositions[position]].isChecked = true
|
val navView = getNavigationBarView()
|
||||||
|
navView.menu[realPositions[position]].isChecked = true
|
||||||
|
updateNavigationRailFab(position)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -443,11 +522,7 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
||||||
var fragment = super.instantiateItem(container, position) as Fragment
|
val fragment = super.instantiateItem(container, position) as Fragment
|
||||||
if (fragment.isCreated && getItemPosition(fragment) == POSITION_NONE) {
|
|
||||||
destroyItem(container, position, fragment)
|
|
||||||
fragment = super.instantiateItem(container, position) as Fragment
|
|
||||||
}
|
|
||||||
fragmentMap[getId(position)] = fragment
|
fragmentMap[getId(position)] = fragment
|
||||||
return fragment
|
return fragment
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<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_height="match_parent">
|
|
||||||
|
|
||||||
<com.google.android.material.navigationrail.NavigationRailView
|
|
||||||
android:id="@+id/navigation_rail_view"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="?attr/colorSurfaceContainer"
|
|
||||||
app:menuGravity="center"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:menu="@menu/main_bnv" />
|
|
||||||
|
|
||||||
<androidx.viewpager.widget.ViewPager
|
|
||||||
android:id="@+id/view_pager_main"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintStart_toEndOf="@id/navigation_rail_view"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent" />
|
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
@@ -7,11 +7,11 @@
|
|||||||
|
|
||||||
<androidx.viewpager.widget.ViewPager
|
<androidx.viewpager.widget.ViewPager
|
||||||
android:id="@+id/view_pager_main"
|
android:id="@+id/view_pager_main"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
app:layout_constraintBottom_toTopOf="@id/bottom_navigation_view"
|
app:layout_constraintBottom_toTopOf="@id/bottom_navigation_view"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toEndOf="@id/navigation_rail_view"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:ignore="SpeakableTextPresentCheck" />
|
tools:ignore="SpeakableTextPresentCheck" />
|
||||||
|
|
||||||
@@ -20,9 +20,23 @@
|
|||||||
android:id="@+id/bottom_navigation_view"
|
android:id="@+id/bottom_navigation_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="visible"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:menu="@menu/main_bnv" />
|
app:menu="@menu/main_bnv" />
|
||||||
|
|
||||||
|
<com.google.android.material.navigationrail.NavigationRailView
|
||||||
|
android:id="@+id/navigation_rail_view"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="?attr/colorSurfaceContainer"
|
||||||
|
android:visibility="visible"
|
||||||
|
app:headerLayout="@layout/navigation_rail_fab"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:menu="@menu/main_bnv"
|
||||||
|
app:menuGravity="center" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?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/navigation_rail_fab"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="top|start"
|
||||||
|
android:clipChildren="false"
|
||||||
|
android:clipToPadding="false"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/nav_botton"
|
||||||
|
android:layout_width="56dp"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:scaleType="center"
|
||||||
|
android:src="@drawable/ic_menu" />
|
||||||
|
|
||||||
|
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
|
||||||
|
android:id="@+id/nav_fab"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/search"
|
||||||
|
app:icon="@drawable/ic_search" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
@@ -124,5 +124,11 @@
|
|||||||
<item>@string/bookshelf_px_5</item>
|
<item>@string/bookshelf_px_5</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="tabletInterface">
|
||||||
|
<item>自动</item>
|
||||||
|
<item>总是</item>
|
||||||
|
<item>横屏时</item>
|
||||||
|
<item>关闭</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -1242,4 +1242,5 @@
|
|||||||
<string name="system_media_control_compatibility_change">系统媒体控件兼容性更改</string>
|
<string name="system_media_control_compatibility_change">系统媒体控件兼容性更改</string>
|
||||||
<string name="system_media_control_compatibility_change_summary">当锁屏不显示系统媒体控件时可以尝试开启,比如 OneUI 7.0或 OriginOS 等</string>
|
<string name="system_media_control_compatibility_change_summary">当锁屏不显示系统媒体控件时可以尝试开启,比如 OneUI 7.0或 OriginOS 等</string>
|
||||||
<string name="read_aloud_pause_resume">朗读暂停/继续</string>
|
<string name="read_aloud_pause_resume">朗读暂停/继续</string>
|
||||||
|
<string name="tabletInterface">平板界面</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -64,4 +64,11 @@
|
|||||||
<item>en</item>
|
<item>en</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="tabletInterface_value">
|
||||||
|
<item>auto</item>
|
||||||
|
<item>always</item>
|
||||||
|
<item>landscape</item>
|
||||||
|
<item>off</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -152,6 +152,13 @@
|
|||||||
<item>English</item>
|
<item>English</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="tabletInterface">
|
||||||
|
<item>Auto</item>
|
||||||
|
<item>Always</item>
|
||||||
|
<item>In_Landscape_Mode</item>
|
||||||
|
<item>Off</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
<string-array name="rule_type">
|
<string-array name="rule_type">
|
||||||
<item>BookSource</item>
|
<item>BookSource</item>
|
||||||
<item>RssSource</item>
|
<item>RssSource</item>
|
||||||
|
|||||||
@@ -1247,4 +1247,5 @@
|
|||||||
<string name="system_media_control_compatibility_change_summary">当锁屏不显示系统媒体控件时可以尝试开启,比如 OneUI 7.0或 OriginOS 等</string>
|
<string name="system_media_control_compatibility_change_summary">当锁屏不显示系统媒体控件时可以尝试开启,比如 OneUI 7.0或 OriginOS 等</string>
|
||||||
<string name="read_aloud_pause_resume">朗读暂停/继续</string>
|
<string name="read_aloud_pause_resume">朗读暂停/继续</string>
|
||||||
<string name="play_mode">播放模式</string>
|
<string name="play_mode">播放模式</string>
|
||||||
|
<string name="tabletInterface">平板界面</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -40,6 +40,13 @@
|
|||||||
app:iconSpaceReserved="false"
|
app:iconSpaceReserved="false"
|
||||||
app:icons="@array/icons" />
|
app:icons="@array/icons" />
|
||||||
|
|
||||||
|
<io.legato.kazusa.lib.prefs.NameListPreference
|
||||||
|
android:defaultValue="auto"
|
||||||
|
android:key="tabletInterface"
|
||||||
|
android:title="@string/tabletInterface"
|
||||||
|
app:entries="@array/tabletInterface"
|
||||||
|
app:entryValues="@array/tabletInterface_value" />
|
||||||
|
|
||||||
<io.legato.kazusa.lib.prefs.Preference
|
<io.legato.kazusa.lib.prefs.Preference
|
||||||
android:key="welcomeStyle"
|
android:key="welcomeStyle"
|
||||||
android:title="@string/welcome_style"
|
android:title="@string/welcome_style"
|
||||||
|
|||||||
Reference in New Issue
Block a user