feat: 优化

pull/209/head
kunfei 5 years ago
parent 31f390a1d2
commit d7d42dd8b3
  1. 40
      app/src/main/java/io/legado/app/ui/book/read/page/ContentView.kt
  2. 44
      app/src/main/java/io/legado/app/utils/ConstraintUtil.kt

@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.view.MotionEvent import android.view.MotionEvent
import android.view.ViewGroup
import android.widget.FrameLayout import android.widget.FrameLayout
import androidx.core.view.isGone import androidx.core.view.isGone
import androidx.core.view.isInvisible import androidx.core.view.isInvisible
@ -15,10 +16,7 @@ import io.legado.app.help.ReadBookConfig
import io.legado.app.help.ReadTipConfig import io.legado.app.help.ReadTipConfig
import io.legado.app.ui.book.read.page.entities.TextPage import io.legado.app.ui.book.read.page.entities.TextPage
import io.legado.app.ui.widget.BatteryView import io.legado.app.ui.widget.BatteryView
import io.legado.app.utils.dp import io.legado.app.utils.*
import io.legado.app.utils.getCompatColor
import io.legado.app.utils.statusBarHeight
import io.legado.app.utils.visible
import kotlinx.android.synthetic.main.view_book_page.view.* import kotlinx.android.synthetic.main.view_book_page.view.*
import java.util.* import java.util.*
@ -102,10 +100,24 @@ class ContentView(context: Context) : FrameLayout(context) {
ll_footer.isGone = hideFooter ll_footer.isGone = hideFooter
} }
tvTitle = when (ReadTipConfig.chapterTitle) { tvTitle = when (ReadTipConfig.chapterTitle) {
ReadTipConfig.tipHeaderLeft -> tv_header_left ReadTipConfig.tipHeaderLeft -> {
ConstraintUtil(ll_header).begin()
.rightToLeftOf(R.id.tv_header_left, R.id.tv_header_right)
.setWidth(R.id.tv_header_left, 0)
.setHorizontalWeight(R.id.tv_header_left, 1f)
.commit()
tv_header_left
}
ReadTipConfig.tipHeaderMiddle -> tv_header_middle ReadTipConfig.tipHeaderMiddle -> tv_header_middle
ReadTipConfig.tipHeaderRight -> tv_header_right ReadTipConfig.tipHeaderRight -> tv_header_right
ReadTipConfig.tipFooterLeft -> tv_footer_left ReadTipConfig.tipFooterLeft -> {
ConstraintUtil(ll_footer).begin()
.rightToLeftOf(R.id.tv_footer_left, R.id.tv_footer_right)
.setWidth(R.id.tv_footer_left, 0)
.setHorizontalWeight(R.id.tv_footer_left, 1f)
.commit()
tv_footer_left
}
ReadTipConfig.tipFooterMiddle -> tv_footer_middle ReadTipConfig.tipFooterMiddle -> tv_footer_middle
ReadTipConfig.tipFooterRight -> tv_footer_right ReadTipConfig.tipFooterRight -> tv_footer_right
else -> null else -> null
@ -128,10 +140,22 @@ class ContentView(context: Context) : FrameLayout(context) {
textSize = 12f textSize = 12f
} }
tvBattery = when (ReadTipConfig.battery) { tvBattery = when (ReadTipConfig.battery) {
ReadTipConfig.tipHeaderLeft -> tv_header_left ReadTipConfig.tipHeaderLeft -> {
ConstraintUtil(ll_header).begin()
.clear(R.id.tv_header_left, 2)
.setWidth(R.id.tv_header_left, ViewGroup.LayoutParams.WRAP_CONTENT)
.commit()
tv_header_left
}
ReadTipConfig.tipHeaderMiddle -> tv_header_middle ReadTipConfig.tipHeaderMiddle -> tv_header_middle
ReadTipConfig.tipHeaderRight -> tv_header_right ReadTipConfig.tipHeaderRight -> tv_header_right
ReadTipConfig.tipFooterLeft -> tv_footer_left ReadTipConfig.tipFooterLeft -> {
ConstraintUtil(ll_header).begin()
.clear(R.id.tv_footer_left, 2)
.setWidth(R.id.tv_footer_left, ViewGroup.LayoutParams.WRAP_CONTENT)
.commit()
tv_footer_left
}
ReadTipConfig.tipFooterMiddle -> tv_footer_middle ReadTipConfig.tipFooterMiddle -> tv_footer_middle
ReadTipConfig.tipFooterRight -> tv_footer_right ReadTipConfig.tipFooterRight -> tv_footer_right
else -> null else -> null

@ -6,7 +6,7 @@ import androidx.constraintlayout.widget.ConstraintSet
import androidx.transition.TransitionManager import androidx.transition.TransitionManager
class ConstraintUtil(val constraintLayout: ConstraintLayout) { class ConstraintUtil(private val constraintLayout: ConstraintLayout) {
private var begin: ConstraintBegin? = null private var begin: ConstraintBegin? = null
private val applyConstraintSet = ConstraintSet() private val applyConstraintSet = ConstraintSet()
@ -19,14 +19,14 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
/** /**
* 开始修改 * 开始修改
*/ */
fun begin(): ConstraintBegin? { fun begin(): ConstraintBegin {
synchronized(ConstraintBegin::class.java) { synchronized(ConstraintBegin::class.java) {
if (begin == null) { if (begin == null) {
begin = ConstraintBegin() begin = ConstraintBegin(constraintLayout, applyConstraintSet)
} }
} }
applyConstraintSet.clone(constraintLayout) applyConstraintSet.clone(constraintLayout)
return begin return begin!!
} }
/** /**
@ -53,7 +53,13 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
resetConstraintSet.applyTo(constraintLayout) resetConstraintSet.applyTo(constraintLayout)
} }
inner class ConstraintBegin { }
class ConstraintBegin(
private val constraintLayout: ConstraintLayout,
private val applyConstraintSet: ConstraintSet
) {
/** /**
* 清除关系<br></br> * 清除关系<br></br>
* 注意这里不仅仅会清除关系还会清除对应控件的宽高为 w:0,h:0 * 注意这里不仅仅会清除关系还会清除对应控件的宽高为 w:0,h:0
@ -78,6 +84,16 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
return this return this
} }
fun setHorizontalWeight(viewId: Int, weight: Float): ConstraintBegin {
applyConstraintSet.setHorizontalWeight(viewId, weight)
return this
}
fun setVerticalWeight(viewId: Int, weight: Float): ConstraintBegin {
applyConstraintSet.setVerticalWeight(viewId, weight)
return this
}
/** /**
* 为某个控件设置 margin * 为某个控件设置 margin
* @param viewId 某个控件ID * @param viewId 某个控件ID
@ -151,7 +167,7 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
* @param endId * @param endId
* @return * @return
*/ */
fun Left_toLeftOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin { fun leftToLeftOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin {
applyConstraintSet.connect(startId, ConstraintSet.LEFT, endId, ConstraintSet.LEFT) applyConstraintSet.connect(startId, ConstraintSet.LEFT, endId, ConstraintSet.LEFT)
return this return this
} }
@ -162,7 +178,7 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
* @param endId * @param endId
* @return * @return
*/ */
fun Left_toRightOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin { fun leftToRightOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin {
applyConstraintSet.connect(startId, ConstraintSet.LEFT, endId, ConstraintSet.RIGHT) applyConstraintSet.connect(startId, ConstraintSet.LEFT, endId, ConstraintSet.RIGHT)
return this return this
} }
@ -173,7 +189,7 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
* @param endId * @param endId
* @return * @return
*/ */
fun Top_toTopOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin { fun topToTopOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin {
applyConstraintSet.connect(startId, ConstraintSet.TOP, endId, ConstraintSet.TOP) applyConstraintSet.connect(startId, ConstraintSet.TOP, endId, ConstraintSet.TOP)
return this return this
} }
@ -184,7 +200,7 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
* @param endId * @param endId
* @return * @return
*/ */
fun Top_toBottomOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin { fun topToBottomOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin {
applyConstraintSet.connect(startId, ConstraintSet.TOP, endId, ConstraintSet.BOTTOM) applyConstraintSet.connect(startId, ConstraintSet.TOP, endId, ConstraintSet.BOTTOM)
return this return this
} }
@ -195,7 +211,7 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
* @param endId * @param endId
* @return * @return
*/ */
fun Right_toLeftOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin { fun rightToLeftOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin {
applyConstraintSet.connect(startId, ConstraintSet.RIGHT, endId, ConstraintSet.LEFT) applyConstraintSet.connect(startId, ConstraintSet.RIGHT, endId, ConstraintSet.LEFT)
return this return this
} }
@ -206,7 +222,7 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
* @param endId * @param endId
* @return * @return
*/ */
fun Right_toRightOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin { fun rightToRightOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin {
applyConstraintSet.connect(startId, ConstraintSet.RIGHT, endId, ConstraintSet.RIGHT) applyConstraintSet.connect(startId, ConstraintSet.RIGHT, endId, ConstraintSet.RIGHT)
return this return this
} }
@ -217,7 +233,7 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
* @param endId * @param endId
* @return * @return
*/ */
fun Bottom_toBottomOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin { fun bottomToBottomOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin {
applyConstraintSet.connect(startId, ConstraintSet.BOTTOM, endId, ConstraintSet.BOTTOM) applyConstraintSet.connect(startId, ConstraintSet.BOTTOM, endId, ConstraintSet.BOTTOM)
return this return this
} }
@ -228,7 +244,7 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
* @param endId * @param endId
* @return * @return
*/ */
fun Bottom_toTopOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin { fun bottomToTopOf(@IdRes startId: Int, @IdRes endId: Int): ConstraintBegin {
applyConstraintSet.connect(startId, ConstraintSet.BOTTOM, endId, ConstraintSet.TOP) applyConstraintSet.connect(startId, ConstraintSet.BOTTOM, endId, ConstraintSet.TOP)
return this return this
} }
@ -261,6 +277,4 @@ class ConstraintUtil(val constraintLayout: ConstraintLayout) {
fun commit() { fun commit() {
applyConstraintSet.applyTo(constraintLayout) applyConstraintSet.applyTo(constraintLayout)
} }
}
} }
Loading…
Cancel
Save