mirror of
https://github.com/fumiama/copymanga.git
synced 2026-06-05 07:20:23 +08:00
v2.1.2
新增 1. 深色阅读背景开关(fix #41) 修复 1. 主页未加载完全时无法刷新 2. 前进后退后丢失详情页失灵 3. 点一本书后迅速返回概率闪退 优化 1. 详情页头部显示 2. 取消详情页下拉放大 3. 大屏下详情页caption缩进
This commit is contained in:
@@ -8,8 +8,8 @@ android {
|
||||
applicationId 'top.fumiama.copymanga'
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 34
|
||||
versionCode 44
|
||||
versionName '2.1.1'
|
||||
versionCode 45
|
||||
versionName '2.1.2'
|
||||
resConfigs 'zh', 'zh-rCN'
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
@@ -57,7 +57,6 @@ import java.lang.Thread.sleep
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
var isDrawerClosed = true
|
||||
private var menuMain: Menu? = null
|
||||
private var navController: NavController? = null
|
||||
|
||||
@@ -366,6 +365,7 @@ class MainActivity : AppCompatActivity() {
|
||||
|
||||
companion object{
|
||||
var mainWeakReference: WeakReference<MainActivity>? = null
|
||||
var isDrawerClosed = true
|
||||
var ime: InputMethodManager? = null
|
||||
const val MSG_CROP_IMAGE = 1
|
||||
var shelf: Shelf? = null
|
||||
|
||||
@@ -3,10 +3,11 @@ package top.fumiama.copymanga.template.general
|
||||
import android.app.Activity
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.content.edit
|
||||
import top.fumiama.copymanga.tools.ui.UITools
|
||||
|
||||
open class ActivityTemplate:Activity() {
|
||||
open class ActivityTemplate:AppCompatActivity() {
|
||||
lateinit var toolsBox: UITools
|
||||
val pb = BoolPref()
|
||||
private val allFullScreen
|
||||
|
||||
@@ -8,6 +8,7 @@ import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.google.gson.Gson
|
||||
import kotlinx.android.synthetic.main.app_bar_main.*
|
||||
import kotlinx.android.synthetic.main.fragment_book.*
|
||||
import kotlinx.android.synthetic.main.line_bookinfo_text.*
|
||||
import kotlinx.android.synthetic.main.line_booktandb.*
|
||||
@@ -25,6 +26,7 @@ import java.lang.ref.WeakReference
|
||||
|
||||
class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
|
||||
var isOnPause = false
|
||||
private var mBookHandler: BookHandler? = null
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
@@ -57,24 +59,26 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
|
||||
}
|
||||
}
|
||||
}
|
||||
bookHandler = BookHandler(WeakReference(this), path)
|
||||
mBookHandler = BookHandler(WeakReference(this), path)
|
||||
Log.d("MyBF", "read path: $path")
|
||||
bookHandler = mBookHandler
|
||||
Thread {
|
||||
sleep(600)
|
||||
bookHandler?.startLoad()
|
||||
mBookHandler?.startLoad()
|
||||
}.start()
|
||||
} else {
|
||||
bookHandler = mBookHandler
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
isOnPause = false
|
||||
/*mainWeakReference?.get()?.apply {
|
||||
toolbar.title = bookHandler?.book?.results?.comic?.name
|
||||
bookHandler = mBookHandler
|
||||
mainWeakReference?.get()?.apply {
|
||||
toolbar.title = mBookHandler?.book?.results?.comic?.name
|
||||
}
|
||||
setStartRead()
|
||||
fbibinfo?.layoutParams?.height = ((fbibinfo?.width?:0) * 4.0 / 9.0 + 0.5).toInt()
|
||||
*/
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
@@ -84,25 +88,25 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
bookHandler?.destroy()
|
||||
bookHandler?.ads?.forEach {
|
||||
mBookHandler?.destroy()
|
||||
mBookHandler?.ads?.forEach {
|
||||
it.exit = true
|
||||
}
|
||||
bookHandler = null
|
||||
}
|
||||
|
||||
fun setStartRead() {
|
||||
if(bookHandler?.chapterNames?.isNotEmpty() == true) mainWeakReference?.get()?.apply {
|
||||
bookHandler?.book?.results?.comic?.let { comic ->
|
||||
if(mBookHandler?.chapterNames?.isNotEmpty() == true) mainWeakReference?.get()?.apply {
|
||||
mBookHandler?.book?.results?.comic?.let { comic ->
|
||||
getPreferences(MODE_PRIVATE).getInt(comic.name, -1).let { p ->
|
||||
this@BookFragment.lbbstart.apply {
|
||||
var i = 0
|
||||
if(p >= 0) {
|
||||
text = bookHandler!!.chapterNames[p]
|
||||
text = mBookHandler!!.chapterNames[p]
|
||||
i = p
|
||||
}
|
||||
setOnClickListener {
|
||||
bookHandler?.urlArray?.let {
|
||||
mBookHandler?.urlArray?.let {
|
||||
Reader.viewMangaAt(comic.name, i, it)
|
||||
}
|
||||
}
|
||||
@@ -114,22 +118,22 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
fun setAddToShelf() {
|
||||
if(bookHandler?.chapterNames?.isNotEmpty() == true) {
|
||||
val b = MainActivity.shelf?.query(bookHandler?.path!!)
|
||||
bookHandler?.collect = b?.results?.collect?:-2
|
||||
Log.d("MyBF", "get collect of ${bookHandler?.path} = ${bookHandler?.collect}")
|
||||
if(mBookHandler?.chapterNames?.isNotEmpty() == true) {
|
||||
val b = MainActivity.shelf?.query(mBookHandler?.path!!)
|
||||
mBookHandler?.collect = b?.results?.collect?:-2
|
||||
Log.d("MyBF", "get collect of ${mBookHandler?.path} = ${mBookHandler?.collect}")
|
||||
b?.results?.browse?.chapter_name?.let { name ->
|
||||
btsub.text = "${btsub.text} ${getString(R.string.text_format_cloud_read_to).format(name)}"
|
||||
}
|
||||
bookHandler?.collect?.let { collect ->
|
||||
mBookHandler?.collect?.let { collect ->
|
||||
if (collect > 0) {
|
||||
this@BookFragment.lbbsub.setText(R.string.button_sub_subscribed)
|
||||
}
|
||||
}
|
||||
bookHandler?.book?.results?.comic?.let { comic ->
|
||||
mBookHandler?.book?.results?.comic?.let { comic ->
|
||||
this@BookFragment.lbbsub.setOnClickListener {
|
||||
if (this@BookFragment.lbbsub.text != getString(R.string.button_sub)) {
|
||||
bookHandler?.collect?.let { collect ->
|
||||
mBookHandler?.collect?.let { collect ->
|
||||
if (collect < 0) return@setOnClickListener
|
||||
Thread{
|
||||
val re = MainActivity.shelf?.del(collect)
|
||||
@@ -160,13 +164,13 @@ class BookFragment: NoBackRefreshFragment(R.layout.fragment_book) {
|
||||
fun navigate2dl(){
|
||||
val bundle = Bundle()
|
||||
bundle.putString("path", arguments?.getString("path")?:"null")
|
||||
bundle.putString("name", bookHandler!!.book?.results?.comic?.name)
|
||||
if(bookHandler!!.vols != null) {
|
||||
bundle.putString("name", mBookHandler!!.book?.results?.comic?.name)
|
||||
if(mBookHandler!!.vols != null) {
|
||||
bundle.putBoolean("loadJson", true)
|
||||
}
|
||||
bundle.putStringArray("group", bookHandler!!.gpws)
|
||||
bundle.putStringArray("groupNames", bookHandler!!.keys)
|
||||
bundle.putIntArray("count", bookHandler!!.cnts)
|
||||
bundle.putStringArray("group", mBookHandler!!.gpws)
|
||||
bundle.putStringArray("groupNames", mBookHandler!!.keys)
|
||||
bundle.putIntArray("count", mBookHandler!!.cnts)
|
||||
findNavController().let {
|
||||
Navigate.safeNavigateTo(it, R.id.action_nav_book_to_nav_group, bundle)
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import android.os.Looper
|
||||
import android.os.Message
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
@@ -74,7 +73,7 @@ class BookHandler(private val th: WeakReference<BookFragment>, val path: String)
|
||||
1 -> setCover()
|
||||
2 -> setTexts()
|
||||
3 -> setAuthorsAndTags()
|
||||
4 -> setOverScale()
|
||||
//4 -> setOverScale()
|
||||
6 -> if(complete) that?.navigate2dl()
|
||||
7 -> setVolumes()
|
||||
8 -> that?.apply { fbl?.addView(msg.obj as View) }
|
||||
@@ -118,22 +117,24 @@ class BookHandler(private val th: WeakReference<BookFragment>, val path: String)
|
||||
|
||||
private fun endSetLayouts() {
|
||||
if (exit) return
|
||||
that?.fbloading?.visibility = View.GONE
|
||||
that?.fbloading?.apply {
|
||||
pauseAnimation()
|
||||
visibility = View.GONE
|
||||
}
|
||||
complete = true
|
||||
that?.setStartRead()
|
||||
that?.setAddToShelf()
|
||||
Log.d("MyBH", "Set complete: true")
|
||||
}
|
||||
private fun setOverScale(){
|
||||
that?.fbov?.setScaleView(that!!.lbibg)
|
||||
}
|
||||
|
||||
/*private fun setOverScale() {
|
||||
if (exit) return
|
||||
that?.fbov?.setScaleView(that!!.fbapp)
|
||||
}*/
|
||||
|
||||
private fun setCover() {
|
||||
if (exit) return
|
||||
that?.apply {
|
||||
that?.layoutInflater?.inflate(R.layout.line_bookinfo, that?.fbl, false)?.let {
|
||||
fbl.addView(it)
|
||||
setInfoHeight(it)
|
||||
}
|
||||
book?.results?.comic?.cover?.let { cover ->
|
||||
val load = Glide.with(this).load(
|
||||
GlideUrl(CMApi.proxy?.wrap(cover)?:cover, CMApi.myGlideHeaders)
|
||||
@@ -144,7 +145,7 @@ class BookHandler(private val th: WeakReference<BookFragment>, val path: String)
|
||||
?.let { it3 -> load.apply(it3).into(lbibg) }
|
||||
}
|
||||
imf?.visibility = View.GONE
|
||||
fbl?.addView(divider)
|
||||
//fbl?.addView(divider)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,6 +156,7 @@ class BookHandler(private val th: WeakReference<BookFragment>, val path: String)
|
||||
}
|
||||
|
||||
private fun setTexts(){
|
||||
if (exit) return
|
||||
//that?.tic?.text = book?.name
|
||||
that?.tic?.visibility = View.GONE
|
||||
mainWeakReference?.get()?.toolbar?.title = book?.results?.comic?.name
|
||||
@@ -175,15 +177,6 @@ class BookHandler(private val th: WeakReference<BookFragment>, val path: String)
|
||||
that?.fbl?.addView(divider)
|
||||
}
|
||||
|
||||
private fun setInfoHeight(v: View){
|
||||
v.viewTreeObserver.addOnGlobalLayoutListener {
|
||||
Log.d("MyMy", "Width: ${v.width}")
|
||||
val newH = (v.width * 4.0 / 9.0 + 0.5).toInt()
|
||||
v.layoutParams.height = newH
|
||||
v.invalidate()
|
||||
}
|
||||
}
|
||||
|
||||
private fun setTheme(caption: String, themeStructure: Array<ThemeStructure>, nav: Int) {
|
||||
that?.apply {
|
||||
val t = layoutInflater.inflate(R.layout.line_caption, fbl, false)
|
||||
@@ -225,6 +218,7 @@ class BookHandler(private val th: WeakReference<BookFragment>, val path: String)
|
||||
}
|
||||
|
||||
private fun setAuthorsAndTags() {
|
||||
if (exit) return
|
||||
that?.apply {
|
||||
book?.results?.comic?.apply {
|
||||
author?.let {
|
||||
|
||||
@@ -156,7 +156,7 @@ class HomeFragment : NoBackRefreshFragment(R.layout.fragment_home) {
|
||||
|
||||
Thread{
|
||||
homeHandler.obtainMessage(-1, true).sendToTarget()
|
||||
while(mainWeakReference?.get()?.isDrawerClosed != true) sleep(233)
|
||||
while(!MainActivity.isDrawerClosed) sleep(233)
|
||||
//homeHandler.sendEmptyMessage(6) //removeAllViews
|
||||
homeHandler.fhib = null
|
||||
sleep(600)
|
||||
@@ -164,6 +164,12 @@ class HomeFragment : NoBackRefreshFragment(R.layout.fragment_home) {
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
swiperefresh?.isRefreshing = false
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
homeHandler.destroy()
|
||||
|
||||
@@ -14,6 +14,7 @@ import androidx.cardview.widget.CardView
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.animation.doOnEnd
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.model.GlideUrl
|
||||
import com.to.aboomy.pager2banner.Banner
|
||||
@@ -58,6 +59,7 @@ class HomeHandler(private val that: WeakReference<HomeFragment>) : AutoDownloadH
|
||||
-1 -> homeF?.swiperefresh?.isRefreshing = msg.obj as Boolean
|
||||
//0 -> setLayouts()
|
||||
1 -> inflateCardLines()
|
||||
2 -> homeF?.swiperefresh?.let { setSwipe(it) }
|
||||
3 -> setBanner(fhib as Banner)
|
||||
5 -> setBannerInfo(msg.obj as Banner)
|
||||
6 -> {
|
||||
@@ -107,6 +109,7 @@ class HomeHandler(private val that: WeakReference<HomeFragment>) : AutoDownloadH
|
||||
if(exit) return
|
||||
try {
|
||||
Thread {
|
||||
sendEmptyMessage(2) //setSwipe
|
||||
sendEmptyMessage(7) //inflateBanner
|
||||
sendEmptyMessage(1) //inflateCardLines
|
||||
}.start()
|
||||
@@ -255,8 +258,11 @@ class HomeHandler(private val that: WeakReference<HomeFragment>) : AutoDownloadH
|
||||
).adapter = homeF?.ViewData(v)?.RecyclerViewAdapter()
|
||||
}
|
||||
v.invalidate()
|
||||
homeF?.fhov?.swipeRefreshLayout = homeF?.swiperefresh
|
||||
homeF?.swiperefresh?.setOnRefreshListener {
|
||||
}
|
||||
|
||||
private fun setSwipe(sw: SwipeRefreshLayout) {
|
||||
homeF?.fhov?.swipeRefreshLayout = sw
|
||||
sw.setOnRefreshListener {
|
||||
Log.d("MyHFH", "Refresh items.")
|
||||
//index = null
|
||||
//Thread{this@HomeHandler.obtainMessage(-1, true).sendToTarget()}.start() //startLoad
|
||||
@@ -271,7 +277,7 @@ class HomeHandler(private val that: WeakReference<HomeFragment>) : AutoDownloadH
|
||||
}
|
||||
}
|
||||
|
||||
private fun allocateLine(title: String, iconResId: Int, comics: Array<ComicStructure>, finish: Boolean = false, isTopic: Boolean = false, onClick: (() -> Unit)? = null): Int{
|
||||
private fun allocateLine(title: String, iconResId: Int, comics: Array<ComicStructure>, finish: Boolean = false, isTopic: Boolean = false, onClick: (() -> Unit)? = null): Int{
|
||||
val p = indexLines.size
|
||||
val c = comics.size / 3
|
||||
homeF?.layoutInflater?.inflate(
|
||||
|
||||
@@ -17,6 +17,7 @@ import android.util.TypedValue
|
||||
import android.view.*
|
||||
import android.widget.SeekBar
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import androidx.core.animation.doOnEnd
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.edit
|
||||
@@ -127,10 +128,19 @@ class ViewMangaActivity : TitleActivityTemplate() {
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
val settingsPref = MainActivity.mainWeakReference?.get()?.let { PreferenceManager.getDefaultSharedPreferences(it) }
|
||||
settingsPref?.getBoolean("settings_cat_vm_sw_always_dark_bg", false)?.let {
|
||||
if (it) {
|
||||
Log.d("MyVM", "force dark")
|
||||
delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_YES
|
||||
} else {
|
||||
delegate.localNightMode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
|
||||
}
|
||||
}
|
||||
postponeEnterTransition()
|
||||
setContentView(R.layout.activity_viewmanga)
|
||||
super.onCreate(null)
|
||||
val settingsPref = MainActivity.mainWeakReference?.get()?.let { PreferenceManager.getDefaultSharedPreferences(it) }
|
||||
|
||||
va = WeakReference(this)
|
||||
//dlZip2View = intent.getStringExtra("callFrom") == "Dl" || p["dlZip2View"] == "true"
|
||||
//zipFirst = intent.getStringExtra("callFrom") == "zipFirst"
|
||||
|
||||
@@ -1,28 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout 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">
|
||||
|
||||
<top.fumiama.copymanga.views.OverScrollView
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/fbapp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/colorSurface">
|
||||
|
||||
<include
|
||||
android:id="@+id/fbai"
|
||||
layout="@layout/line_bookinfo"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/nav_header_vertical_spacing"
|
||||
app:layout_constraintBottom_toTopOf="@id/fbov"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_scrollFlags="scroll|enterAlways" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/fbov"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/fbiinf">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/fbl"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"/>
|
||||
</top.fumiama.copymanga.views.OverScrollView>
|
||||
android:orientation="vertical" />
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
<ProgressBar
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/fbloading"
|
||||
style="?android:attr/progressBarStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:alpha="0.5"
|
||||
app:lottie_autoPlay="true"
|
||||
app:lottie_loop="true"
|
||||
app:lottie_rawRes="@raw/lottie_loading" />
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
@@ -11,14 +11,14 @@
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swiperefresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:isScrollContainer="true"
|
||||
android:layout_marginTop="@dimen/search_layout_padding">
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/search_layout_padding"
|
||||
android:isScrollContainer="true">
|
||||
|
||||
<top.fumiama.copymanga.views.ScrollRefreshView
|
||||
android:id="@+id/fhov"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
@@ -28,7 +28,7 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/fhl"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -1,41 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/nav_header_height">
|
||||
android:layout_height="wrap_content"
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
app:cardCornerRadius="@dimen/book_card_radius"
|
||||
app:cardElevation="@dimen/book_card_elevation"
|
||||
tools:layout_editor_absoluteX="8dp"
|
||||
tools:layout_editor_absoluteY="8dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/lbibg"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:alpha="0.4"
|
||||
android:scaleType="centerCrop"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
android:scaleType="centerCrop" />
|
||||
|
||||
<include
|
||||
android:id="@+id/lbc"
|
||||
layout="@layout/card_book"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/lbitb"
|
||||
app:layout_constraintHorizontal_weight="1"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.499" />
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/book_bg_card_padding">
|
||||
|
||||
<include
|
||||
android:id="@+id/lbitb"
|
||||
layout="@layout/line_booktandb"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="@+id/lbibg"
|
||||
app:layout_constraintHorizontal_weight="2"
|
||||
app:layout_constraintStart_toEndOf="@+id/lbc"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
<include
|
||||
android:id="@+id/lbc"
|
||||
layout="@layout/card_book"
|
||||
android:layout_width="@dimen/book_card_width"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/lbitb"
|
||||
app:layout_constraintHorizontal_weight="1"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.499" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<include
|
||||
android:id="@+id/lbitb"
|
||||
layout="@layout/line_booktandb"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/nav_header_height"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_weight="2"
|
||||
app:layout_constraintStart_toEndOf="@+id/lbc"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
@@ -1,8 +1,8 @@
|
||||
<?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="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<Button
|
||||
android:id="@+id/lbbsub"
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
android:id="@+id/tcptn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/caption_text_padding"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.06"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -12,6 +12,10 @@
|
||||
|
||||
<dimen name="book_card_radius">16dp</dimen>
|
||||
<dimen name="book_card_elevation">4dp</dimen>
|
||||
<dimen name="book_bg_card_padding">8dp</dimen>
|
||||
<dimen name="book_card_width">128dp</dimen>
|
||||
|
||||
<dimen name="caption_text_padding">16dp</dimen>
|
||||
|
||||
<dimen name="search_layout_padding">64dp</dimen>
|
||||
</resources>
|
||||
@@ -145,6 +145,8 @@
|
||||
<string name="settings_cat_net_et_summary_img_proxy">为避免滥用,代理密钥需加群(559748702)获得,且随时可能会刷新</string>
|
||||
|
||||
<string name="settings_cat_vm">漫画浏览</string>
|
||||
<string name="settings_cat_vm_sw_always_dark_bg">深色阅读背景</string>
|
||||
<string name="settings_cat_vm_sm_always_dark_bg">打开后阅览漫画的背景色永远为黑色</string>
|
||||
<string name="settings_cat_vm_sw_hide_info">隐藏底部时间栏</string>
|
||||
<string name="settings_cat_vm_sm_hide_info">打开后不再在底部显示时间和网络状态</string>
|
||||
<string name="settings_cat_vm_sw_vol_turn">音量键翻页</string>
|
||||
|
||||
@@ -65,6 +65,12 @@
|
||||
<PreferenceCategory
|
||||
app:iconSpaceReserved="false"
|
||||
app:title="@string/settings_cat_vm">
|
||||
<SwitchPreferenceCompat
|
||||
app:iconSpaceReserved="false"
|
||||
app:key="settings_cat_vm_sw_always_dark_bg"
|
||||
app:selectable="true"
|
||||
app:summary="@string/settings_cat_vm_sm_always_dark_bg"
|
||||
app:title="@string/settings_cat_vm_sw_always_dark_bg" />
|
||||
<SwitchPreferenceCompat
|
||||
app:iconSpaceReserved="false"
|
||||
app:key="settings_cat_vm_sw_hide_info"
|
||||
|
||||
Reference in New Issue
Block a user