feat: 优化

pull/219/head
kunfei 5 years ago
parent bf7a820d72
commit e4e5fbf549
  1. 7
      app/src/main/java/io/legado/app/ui/rss/article/RssArticlesFragment.kt
  2. 4
      app/src/main/java/io/legado/app/ui/rss/article/RssSortViewModel.kt
  3. 13
      app/src/main/res/drawable/bg_img_border.xml
  4. 54
      app/src/main/res/layout/item_rss_article_2.xml

@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import io.legado.app.App import io.legado.app.App
@ -53,7 +54,11 @@ class RssArticlesFragment : VMBaseFragment<RssArticlesViewModel>(R.layout.fragme
private fun initView() { private fun initView() {
ATH.applyEdgeEffectColor(recycler_view) ATH.applyEdgeEffectColor(recycler_view)
recycler_view.layoutManager = LinearLayoutManager(requireContext()) recycler_view.layoutManager = if (activityViewModel.isGridLayout) {
GridLayoutManager(requireContext(), 2)
} else {
LinearLayoutManager(requireContext())
}
recycler_view.addItemDecoration(VerticalDivider(requireContext())) recycler_view.addItemDecoration(VerticalDivider(requireContext()))
adapter = RssArticlesAdapter(requireContext(), activityViewModel.layoutId, this) adapter = RssArticlesAdapter(requireContext(), activityViewModel.layoutId, this)
recycler_view.adapter = adapter recycler_view.adapter = adapter

@ -16,9 +16,11 @@ class RssSortViewModel(application: Application) : BaseViewModel(application) {
var rssSource: RssSource? = null var rssSource: RssSource? = null
val titleLiveData = MutableLiveData<String>() val titleLiveData = MutableLiveData<String>()
var order = System.currentTimeMillis() var order = System.currentTimeMillis()
val isGridLayout get() = rssSource?.articleStyle == 2
val layoutId val layoutId
get() = when (rssSource?.articleStyle) { get() = when (rssSource?.articleStyle) {
1 -> R.layout.item_rss_article_1 1 -> R.layout.item_rss_article_1
2 -> R.layout.item_rss_article_2
else -> R.layout.item_rss_article else -> R.layout.item_rss_article
} }
@ -40,7 +42,7 @@ class RssSortViewModel(application: Application) : BaseViewModel(application) {
fun switchLayout() { fun switchLayout() {
rssSource?.let { rssSource?.let {
if (it.articleStyle < 1) { if (it.articleStyle < 2) {
it.articleStyle = it.articleStyle + 1 it.articleStyle = it.articleStyle + 1
} else { } else {
it.articleStyle = 0 it.articleStyle = 0

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/background" />
<stroke
android:width="1dp"
android:color="@color/bg_divider_line" />
<corners android:radius="1dp" />
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp" />
</shape>

@ -0,0 +1,54 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:paddingLeft="4dp"
android:paddingTop="8dp"
android:paddingBottom="6dp"
android:paddingRight="4dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image_view"
android:layout_width="0dp"
android:layout_height="272dp"
android:contentDescription="@string/loading"
android:visibility="visible"
android:scaleType="centerCrop"
android:background="@drawable/bg_img_border"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
tools:ignore="RtlHardcoded,RtlSymmetry" />
<TextView
android:id="@+id/tv_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:maxLines="2"
android:ellipsize="end"
android:text="@string/app_name"
android:textColor="@color/tv_text_default"
android:textSize="13sp"
android:paddingTop="10dp"
app:layout_constraintTop_toBottomOf="@+id/image_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<TextView
android:id="@+id/tv_pub_date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/app_name"
android:textSize="11sp"
android:maxLines="1"
android:paddingTop="8dp"
android:paddingBottom="2dp"
app:layout_constraintTop_toBottomOf="@+id/tv_title"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
tools:ignore="SmallSp" />
</androidx.constraintlayout.widget.ConstraintLayout>
Loading…
Cancel
Save