diff --git a/app/src/debug/res/values-zh-rTW/strings.xml b/app/src/debug/res/values-zh-rTW/strings.xml index 07b0a5dbe..a68f05319 100644 --- a/app/src/debug/res/values-zh-rTW/strings.xml +++ b/app/src/debug/res/values-zh-rTW/strings.xml @@ -1,5 +1,5 @@ 閲讀.D - 閲讀·D·搜索 - \ No newline at end of file + 閲讀·D·搜尋 + diff --git a/app/src/google/res/values-zh-rTW/strings.xml b/app/src/google/res/values-zh-rTW/strings.xml new file mode 100644 index 000000000..35770fc68 --- /dev/null +++ b/app/src/google/res/values-zh-rTW/strings.xml @@ -0,0 +1,6 @@ + + + + 閱讀Pro + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ef2c71ab2..f968d0ba1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -224,7 +224,7 @@ android:launchMode="singleTop" android:screenOrientation="behind" /> diff --git a/app/src/main/assets/updateLog.md b/app/src/main/assets/updateLog.md index 41b2c837f..51ee4565a 100644 --- a/app/src/main/assets/updateLog.md +++ b/app/src/main/assets/updateLog.md @@ -3,6 +3,13 @@ * 关注合作公众号 **[小说拾遗]()** 获取好看的小说。 - 旧版数据导入教程:先在旧版阅读(2.x)中进行备份,然后在新版阅读(3.x)【我的】->【备份与恢复】,选择【导入旧版本数据】。 +**2020/10/02** +* 优化规则解析 +* 优化正文搜索 +* 翻页动画跟随背景 +* 双击发现折叠发现,再次双击滚动至顶端 +* 修复bug + **2020/09/29** * 增加了几个方法用于处理文件 by [Celeter](https://github.com/Celeter) ``` diff --git a/app/src/main/java/io/legado/app/help/ReadBookConfig.kt b/app/src/main/java/io/legado/app/help/ReadBookConfig.kt index 5cceab22d..118f5b6ca 100644 --- a/app/src/main/java/io/legado/app/help/ReadBookConfig.kt +++ b/app/src/main/java/io/legado/app/help/ReadBookConfig.kt @@ -158,12 +158,6 @@ object ReadBookConfig { App.INSTANCE.putPrefBoolean(PreferKey.shareLayout, value) } } - var pageAnim: Int - get() = if (AppConfig.isEInkMode) -1 else App.INSTANCE.getPrefInt(PreferKey.pageAnim) - set(value) { - App.INSTANCE.putPrefInt(PreferKey.pageAnim, value) - isScroll = pageAnim == 3 - } var isScroll = pageAnim == 3 val clickTurnPage get() = App.INSTANCE.getPrefBoolean(PreferKey.clickTurnPage, true) val textFullJustify get() = App.INSTANCE.getPrefBoolean(PreferKey.textFullJustify, true) @@ -182,6 +176,13 @@ object ReadBookConfig { val config get() = if (shareLayout) shareConfig else durConfig + var pageAnim: Int + get() = config.pageAnim() + set(value) { + config.setPageAnim(value) + isScroll = pageAnim == 3 + } + var textFont: String get() = config.textFont set(value) { @@ -379,6 +380,8 @@ object ReadBookConfig { private var textColor: String = "#3E3D3B",//白天文字颜色 private var textColorNight: String = "#ADADAD",//夜间文字颜色 private var textColorEInk: String = "#000000", + private var pageAnim: Int = 0, + private var pageAnimEInk: Int = 3, var textFont: String = "",//字体 var textBold: Int = 0,//是否粗体字 0:正常, 1:粗体, 2:细体 var textSize: Int = 20,//文字大小 @@ -454,6 +457,20 @@ object ReadBookConfig { } } + fun setPageAnim(anim: Int) { + when { + AppConfig.isEInkMode -> pageAnimEInk = anim + else -> pageAnim = anim + } + } + + fun pageAnim(): Int { + return when { + AppConfig.isEInkMode -> pageAnimEInk + else -> pageAnim + } + } + fun textColor(): Int { return when { AppConfig.isEInkMode -> Color.parseColor(textColorEInk) diff --git a/app/src/main/java/io/legado/app/help/storage/Restore.kt b/app/src/main/java/io/legado/app/help/storage/Restore.kt index 18880822e..b98a248d1 100644 --- a/app/src/main/java/io/legado/app/help/storage/Restore.kt +++ b/app/src/main/java/io/legado/app/help/storage/Restore.kt @@ -61,7 +61,6 @@ object Restore { private val readPrefKeys = arrayOf( PreferKey.readStyleSelect, PreferKey.shareLayout, - PreferKey.pageAnim, PreferKey.hideStatusBar, PreferKey.hideNavigationBar, PreferKey.bodyIndent, @@ -215,7 +214,6 @@ object Restore { ReadBookConfig.apply { styleSelect = App.INSTANCE.getPrefInt(PreferKey.readStyleSelect) shareLayout = App.INSTANCE.getPrefBoolean(PreferKey.shareLayout) - pageAnim = App.INSTANCE.getPrefInt(PreferKey.pageAnim) hideStatusBar = App.INSTANCE.getPrefBoolean(PreferKey.hideStatusBar) hideNavigationBar = App.INSTANCE.getPrefBoolean(PreferKey.hideNavigationBar) bodyIndentCount = App.INSTANCE.getPrefInt(PreferKey.bodyIndent, 2) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt index 8cd9937f5..4d17aa16d 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeRule.kt @@ -456,7 +456,7 @@ class AnalyzeRule(var book: BaseBook? = null) : JsExtensions { while (evalMatcher.find()) { if (evalMatcher.start() > start) { tmp = rule.substring(start, evalMatcher.start()) - if (mode != Mode.Js && mode != Mode.Json && mode != Mode.Regex + if (mode != Mode.Js && mode != Mode.Regex && start == 0 && !tmp.contains("##") ) { mode = Mode.Regex diff --git a/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt b/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt index bee66bcc6..91732b149 100644 --- a/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/group/GroupSelectDialog.kt @@ -34,7 +34,6 @@ import io.legado.app.utils.getViewModel import io.legado.app.utils.requestInputMethod import kotlinx.android.synthetic.main.dialog_book_group_picker.* import kotlinx.android.synthetic.main.dialog_edit_text.view.* -import kotlinx.android.synthetic.main.dialog_recycler_view.recycler_view import kotlinx.android.synthetic.main.dialog_recycler_view.tool_bar import kotlinx.android.synthetic.main.item_group_select.view.* import org.jetbrains.anko.sdk27.listeners.onClick diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 92df11f6a..b3a2fbbcd 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -9,7 +9,6 @@ import android.graphics.drawable.ColorDrawable import android.net.Uri import android.os.Bundle import android.os.Handler -import android.util.Log import android.view.* import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import androidx.core.view.get @@ -48,7 +47,7 @@ import io.legado.app.ui.book.read.page.ContentTextView import io.legado.app.ui.book.read.page.PageView import io.legado.app.ui.book.read.page.TextPageFactory import io.legado.app.ui.book.read.page.delegate.PageDelegate -import io.legado.app.ui.book.searchContent.SearchListActivity +import io.legado.app.ui.book.searchContent.SearchContentActivity import io.legado.app.ui.book.source.edit.BookSourceEditActivity import io.legado.app.ui.login.SourceLogin import io.legado.app.ui.replacerule.ReplaceRuleActivity @@ -57,14 +56,16 @@ import io.legado.app.ui.widget.dialog.TextDialog import io.legado.app.utils.* import kotlinx.android.synthetic.main.activity_book_read.* import kotlinx.android.synthetic.main.view_read_menu.* -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.Main +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.jetbrains.anko.sdk27.listeners.onClick import org.jetbrains.anko.startActivity import org.jetbrains.anko.startActivityForResult import org.jetbrains.anko.toast -import java.lang.Runnable class ReadBookActivity : VMBaseActivity(R.layout.activity_book_read), View.OnTouchListener, @@ -494,6 +495,7 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo return true } R.id.menu_search_content -> { + viewModel.searchContentQuery = selectedText openSearchActivity(selectedText) return true } @@ -683,10 +685,10 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo */ override fun openSearchActivity(searchWord: String?) { ReadBook.book?.let { - startActivityForResult( + startActivityForResult( requestCodeSearchResult, Pair("bookUrl", it.bookUrl), - Pair("searchWord", searchWord) + Pair("searchWord", searchWord ?: viewModel.searchContentQuery) ) } } @@ -771,33 +773,50 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo requestCodeChapterList -> data?.getIntExtra("index", ReadBook.durChapterIndex)?.let { index -> if (index != ReadBook.durChapterIndex) { - val pageIndex = data.getIntExtra("pageIndex", 0) - viewModel.openChapter(index, pageIndex) - } + val pageIndex = data.getIntExtra("pageIndex", 0) + viewModel.openChapter(index, pageIndex) } + } requestCodeSearchResult -> data?.getIntExtra("index", ReadBook.durChapterIndex)?.let { index -> - launch(IO){ + launch(IO) { val indexWithinChapter = data.getIntExtra("indexWithinChapter", 0) - val query = data.getStringExtra("query") + viewModel.searchContentQuery = data.getStringExtra("query") ?: "" viewModel.openChapter(index) // block until load correct chapter and pages var pages = ReadBook.curTextChapter?.pages - while (ReadBook.durChapterIndex != index || pages == null ){ + while (ReadBook.durChapterIndex != index || pages == null) { delay(100L) pages = ReadBook.curTextChapter?.pages } - val positions = ReadBook.searchResultPositions(pages, indexWithinChapter, query!!) - while (ReadBook.durPageIndex != positions[0]){ + val positions = + ReadBook.searchResultPositions( + pages, + indexWithinChapter, + viewModel.searchContentQuery + ) + while (ReadBook.durPageIndex != positions[0]) { delay(100L) ReadBook.skipToPage(positions[0]) } - withContext(Main){ - page_view.curPage.selectStartMoveIndex(0, positions[1], positions[2]) + withContext(Main) { + page_view.curPage.selectStartMoveIndex( + 0, + positions[1], + positions[2] + ) delay(20L) - when (positions[3]){ - 0 -> page_view.curPage.selectEndMoveIndex(0, positions[1], positions[2] + query.length - 1) - 1 -> page_view.curPage.selectEndMoveIndex(0, positions[1] + 1, positions[4]) + when (positions[3]) { + 0 -> page_view.curPage.selectEndMoveIndex( + 0, + positions[1], + positions[2] + viewModel.searchContentQuery.length - 1 + ) + 1 -> page_view.curPage.selectEndMoveIndex( + 0, + positions[1] + 1, + positions[4] + ) //todo: consider change page, jump to scroll position -1 -> page_view.curPage.selectEndMoveIndex(1, 0, positions[4]) } diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt index b8efe1cee..e2ff19199 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt @@ -23,6 +23,7 @@ import kotlinx.coroutines.withContext class ReadBookViewModel(application: Application) : BaseViewModel(application) { var isInitFinish = false + var searchContentQuery = "" fun initData(intent: Intent) { execute { diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt index 12201ae29..a791e6939 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/ReadStyleDialog.kt @@ -104,12 +104,7 @@ class ReadStyleDialog : BaseDialogFragment(), FontSelectDialog.CallBack { private fun initData() { cb_share_layout.isChecked = ReadBookConfig.shareLayout - ReadBookConfig.pageAnim.let { - if (it >= 0 && it < rg_page_anim.childCount) { - rg_page_anim.check(rg_page_anim[it].id) - } - } - upStyle() + upView() styleAdapter.setItems(ReadBookConfig.configList) } @@ -149,7 +144,7 @@ class ReadStyleDialog : BaseDialogFragment(), FontSelectDialog.CallBack { cb_share_layout.onCheckedChangeListener = { checkBox, isChecked -> if (checkBox.isPressed) { ReadBookConfig.shareLayout = isChecked - upStyle() + upView() postEvent(EventBus.UP_CONFIG, true) } } @@ -206,7 +201,7 @@ class ReadStyleDialog : BaseDialogFragment(), FontSelectDialog.CallBack { if (index != oldIndex) { ReadBookConfig.styleSelect = index ReadBookConfig.upBg() - upStyle() + upView() styleAdapter.notifyItemChanged(oldIndex) styleAdapter.notifyItemChanged(index) postEvent(EventBus.UP_CONFIG, true) @@ -220,8 +215,11 @@ class ReadStyleDialog : BaseDialogFragment(), FontSelectDialog.CallBack { return true } - private fun upStyle() { + private fun upView() { ReadBookConfig.let { + if (it.pageAnim >= 0 && it.pageAnim < rg_page_anim.childCount) { + rg_page_anim.check(rg_page_anim[it.pageAnim].id) + } dsb_text_size.progress = it.textSize - 5 dsb_text_letter_spacing.progress = (it.letterSpacing * 100).toInt() + 50 dsb_line_size.progress = it.lineSpacingExtra diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListActivity.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt similarity index 93% rename from app/src/main/java/io/legado/app/ui/book/searchContent/SearchListActivity.kt rename to app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt index 6c01801c3..3227a9a00 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt @@ -22,19 +22,20 @@ import io.legado.app.ui.widget.recycler.VerticalDivider import io.legado.app.utils.ColorUtils import io.legado.app.utils.getViewModel import io.legado.app.utils.observeEvent -import kotlinx.android.synthetic.main.activity_search_list.* +import kotlinx.android.synthetic.main.activity_search_content.* import kotlinx.android.synthetic.main.view_search.* import kotlinx.coroutines.* import org.jetbrains.anko.sdk27.listeners.onClick -class SearchListActivity : VMBaseActivity(R.layout.activity_search_list), - SearchListAdapter.Callback { +class SearchContentActivity : + VMBaseActivity(R.layout.activity_search_content), + SearchContentAdapter.Callback { - override val viewModel: SearchListViewModel - get() = getViewModel(SearchListViewModel::class.java) + override val viewModel: SearchContentViewModel + get() = getViewModel(SearchContentViewModel::class.java) - lateinit var adapter: SearchListAdapter + lateinit var adapter: SearchContentAdapter private lateinit var mLayoutManager: UpLinearLayoutManager private var searchResultCounts = 0 private var durChapterIndex = 0 @@ -78,7 +79,7 @@ class SearchListActivity : VMBaseActivity(R.layout.activity } private fun initRecyclerView() { - adapter = SearchListAdapter(this, this) + adapter = SearchContentAdapter(this, this) mLayoutManager = UpLinearLayoutManager(this) recycler_view.layoutManager = mLayoutManager recycler_view.addItemDecoration(VerticalDivider(this)) @@ -134,17 +135,15 @@ class SearchListActivity : VMBaseActivity(R.layout.activity if (!newText.isBlank()) { adapter.clearItems() searchResultList.clear() + refresh_progress_bar.isAutoLoading = true searchResultCounts = 0 viewModel.lastQuery = newText var searchResults = listOf() launch(Dispatchers.Main) { App.db.bookChapterDao().getChapterList(viewModel.bookUrl).map { chapter -> val job = async(Dispatchers.IO) { - if (isLocalBook || adapter.cacheFileNames.contains( - BookHelp.formatChapterName( - chapter - ) - ) + if (isLocalBook + || adapter.cacheFileNames.contains(BookHelp.formatChapterName(chapter)) ) { searchResults = searchChapter(newText, chapter) } @@ -152,6 +151,7 @@ class SearchListActivity : VMBaseActivity(R.layout.activity job.await() if (searchResults.isNotEmpty()) { searchResultList.addAll(searchResults) + refresh_progress_bar.isAutoLoading = false tv_current_search_info.text = "搜索结果:$searchResultCounts" adapter.addItems(searchResults) searchResults = listOf() diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListAdapter.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentAdapter.kt similarity index 95% rename from app/src/main/java/io/legado/app/ui/book/searchContent/SearchListAdapter.kt rename to app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentAdapter.kt index d68eb85ca..d64a1a458 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentAdapter.kt @@ -10,7 +10,7 @@ import io.legado.app.utils.hexString import kotlinx.android.synthetic.main.item_search_list.view.* import org.jetbrains.anko.sdk27.listeners.onClick -class SearchListAdapter(context: Context, val callback: Callback) : +class SearchContentAdapter(context: Context, val callback: Callback) : SimpleRecyclerAdapter(context, R.layout.item_search_list) { val cacheFileNames = hashSetOf() diff --git a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListViewModel.kt b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt similarity index 85% rename from app/src/main/java/io/legado/app/ui/book/searchContent/SearchListViewModel.kt rename to app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt index 0b8cd1259..8ce74e1d4 100644 --- a/app/src/main/java/io/legado/app/ui/book/searchContent/SearchListViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt @@ -6,7 +6,7 @@ import io.legado.app.App import io.legado.app.base.BaseViewModel import io.legado.app.data.entities.Book -class SearchListViewModel(application: Application) : BaseViewModel(application) { +class SearchContentViewModel(application: Application) : BaseViewModel(application) { var bookUrl: String = "" var book: Book? = null var lastQuery: String = "" diff --git a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt index 64e005ba2..26879ae87 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt @@ -39,6 +39,7 @@ class MainActivity : VMBaseActivity(R.layout.activity_main), get() = getViewModel(MainViewModel::class.java) private var exitTime: Long = 0 private var bookshelfReselected: Long = 0 + private var exploreReselected: Long = 0 private var pagePosition = 0 private val fragmentMap = hashMapOf() @@ -72,7 +73,7 @@ class MainActivity : VMBaseActivity(R.layout.activity_main), override fun onNavigationItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.menu_bookshelf -> view_pager_main.setCurrentItem(0, false) - R.id.menu_find_book -> view_pager_main.setCurrentItem(1, false) + R.id.menu_explore -> view_pager_main.setCurrentItem(1, false) R.id.menu_rss -> view_pager_main.setCurrentItem(2, false) R.id.menu_my_config -> view_pager_main.setCurrentItem(3, false) } @@ -88,6 +89,13 @@ class MainActivity : VMBaseActivity(R.layout.activity_main), (fragmentMap[0] as? BookshelfFragment)?.gotoTop() } } + R.id.menu_explore -> { + if (System.currentTimeMillis() - exploreReselected > 300) { + exploreReselected = System.currentTimeMillis() + } else { + (fragmentMap[1] as? ExploreFragment)?.compressExplore() + } + } } } diff --git a/app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt b/app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt index 0fdfa373f..137398b71 100644 --- a/app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/main/explore/ExploreAdapter.kt @@ -11,7 +11,10 @@ import io.legado.app.base.adapter.SimpleRecyclerAdapter import io.legado.app.data.entities.BookSource import io.legado.app.help.coroutine.Coroutine import io.legado.app.lib.theme.accentColor -import io.legado.app.utils.* +import io.legado.app.utils.ACache +import io.legado.app.utils.dp +import io.legado.app.utils.gone +import io.legado.app.utils.visible import kotlinx.android.synthetic.main.item_fillet_text.view.* import kotlinx.android.synthetic.main.item_find_book.view.* import kotlinx.coroutines.CoroutineScope @@ -97,6 +100,17 @@ class ExploreAdapter(context: Context, private val scope: CoroutineScope, val ca } } + fun compressExplore(): Boolean { + return if (exIndex < 0) { + false + } else { + val oldExIndex = exIndex + exIndex = -1 + notifyItemChanged(oldExIndex) + true + } + } + private fun showMenu(view: View, position: Int): Boolean { val source = getItem(position) ?: return true val popupMenu = PopupMenu(context, view) diff --git a/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt b/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt index 6aa870ee7..bceb905d1 100644 --- a/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt +++ b/app/src/main/java/io/legado/app/ui/main/explore/ExploreFragment.kt @@ -15,6 +15,7 @@ import io.legado.app.R import io.legado.app.base.VMBaseFragment import io.legado.app.constant.AppPattern import io.legado.app.data.entities.BookSource +import io.legado.app.help.AppConfig import io.legado.app.lib.theme.ATH import io.legado.app.lib.theme.primaryTextColor import io.legado.app.ui.book.explore.ExploreShowActivity @@ -154,4 +155,14 @@ class ExploreFragment : VMBaseFragment(R.layout.fragment_find_ viewModel.topSource(source) } + fun compressExplore() { + if (!adapter.compressExplore()) { + if (AppConfig.isEInkMode) { + rv_find.scrollToPosition(0) + } else { + rv_find.smoothScrollToPosition(0) + } + } + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_book_search.xml b/app/src/main/res/layout/activity_book_search.xml index 6daf33cd4..244841d15 100644 --- a/app/src/main/res/layout/activity_book_search.xml +++ b/app/src/main/res/layout/activity_book_search.xml @@ -1,20 +1,19 @@ - + android:id="@+id/title_bar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:contentInsetStartWithNavigation="0dp" + app:contentLayout="@layout/view_search" + app:layout_constraintTop_toTopOf="parent" + app:title="搜索" /> + android:orientation="vertical" + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@id/title_bar"> + + + app:layout_constraintTop_toBottomOf="@id/refresh_progress_bar" /> 替换规则(replaceRegex) 分組名稱 備註內容 - E-Ink模式下只有白纸黑字,不显示其它背景 默认启用替换净化 新加入书架的书是否启用替换净化 选择恢复文件 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 0d44a8fae..2cfe6ff7a 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -10,8 +10,8 @@ 匯入閱讀資料 建立子資料夾 建立legado資料夾作為備份資料夾 - 離線緩存書籍備份 - 導出本地同時備份到legado文件夾下exports目錄 + 離線快取書籍備份 + 匯出本機同時備份到legado資料夾下exports目錄 備份路徑 匯入舊版資料 匯入Github資料 @@ -56,7 +56,7 @@ 書架布局 檢視 書城 - 添加本機 + 新增本機 書源 書源管理 建立/匯入/編輯/管理書源 @@ -85,9 +85,9 @@ 瀏覽器寫源,看書 web編輯書源 http://%1$s:%2$d - 離線緩存 - 離線緩存 - 緩存選擇的章節到本機 + 離線快取 + 離線快取 + 快取選擇的章節到本機 換源 \u3000\u3000這是一款使用Kotlin全新開發的開源的閱讀軟體,歡迎您的加入。關注公眾號[legado-top]! @@ -97,7 +97,7 @@ Version %s 後臺校驗書源 - 打開后可以在校驗書源時自由操作 + 打開後可以在校驗書源時自由操作 自動重新整理 打開軟體時自動更新書籍 自動下載最新章節 @@ -159,8 +159,8 @@ 無法打開 分享失敗 無章節 - 添加網址 - 添加書籍網址 + 新增網址 + 新增書籍網址 背景 作者 作者: %s @@ -173,7 +173,7 @@ 禁用書源 建立書源 建立訂閱源 - 添加書籍 + 新增書籍 掃描 複製源 貼上源 @@ -185,7 +185,7 @@ 分享 軟體分享 跟隨系統 - 添加 + 新增 匯入書源 本機匯入 網路匯入 @@ -733,7 +733,6 @@ 取代規則(replaceRegex) 分組名稱 備註內容 - E-Ink模式下只有白紙黑字,不顯示其它背景 預設啟用取代淨化 新加入書架的書是否啟用取代淨化 選擇復原文件 @@ -757,16 +756,16 @@ 總閱讀時間 全不選 刪除所有 - 导入 - 导出 - 保存主题配置 - 保存白天主题配置以共调用和分享 - 保存夜间主题配置以共调用和分享 - 主题列表 - 使用保存主题,导入,分享主题 - 切換默認主題 + 匯入 + 匯出 + 儲存主題配置 + 儲存白天主題配置以供調用和分享 + 儲存夜間主題配置以供調用和分享 + 主題列表 + 使用儲存主題,匯入,分享主題 + 切換預設主題 分享選中書源 時間排序 - 全文搜索 + 全文搜尋 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index e3cc6c436..d9a62c811 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -738,7 +738,6 @@ 替换规则(replaceRegex) 分组名称 备注内容 - E-Ink模式下只有白纸黑字,不显示其它背景 默认启用替换净化 新加入书架的书是否启用替换净化 选择恢复文件 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b7fe8a37f..39b957bf1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -323,8 +323,8 @@ Auto scroll Stop Auto scroll Auto scroll speed - Book infomation - Edit book infomation + Book information + Edit book information Use Bookshelf as start page Auto jump to Recent list Replacement object. Book name or source url is available @@ -739,7 +739,6 @@ Reading interface settings Group name Remarks section - Only white page black text in E-Ink mode Enable replace rule by default For new added books Select restore file