RSS布局改变和指定源绑在一起而不是全局配置

pull/219/head
yangyxd 5 years ago
parent 4c8fdf0030
commit 064cfe20f1
  1. 19
      app/src/main/java/io/legado/app/help/AppConfig.kt
  2. 6
      app/src/main/java/io/legado/app/ui/rss/article/RssArticlesFragment.kt
  3. 5
      app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt
  4. 2
      app/src/main/res/layout/item_rss_article_1.xml
  5. 6
      app/src/main/res/layout/item_rss_article_2.xml

@ -5,6 +5,7 @@ import android.content.pm.PackageManager
import io.legado.app.App
import io.legado.app.R
import io.legado.app.constant.PreferKey
import io.legado.app.data.entities.RssSource
import io.legado.app.utils.*
object AppConfig {
@ -133,11 +134,19 @@ object AppConfig {
val isGooglePlay: Boolean get() = App.INSTANCE.channel == "google"
var rssLayout: Int
get() = App.INSTANCE.getPrefInt("rssLayoutMode")
set(value) {
App.INSTANCE.putPrefInt("rssLayoutMode", value)
}
private fun rssSourceKey(source: RssSource): String {
return source?.sourceUrl
}
fun getRssLayout(source: RssSource): Int {
return App.INSTANCE.getPrefInt("rssLayoutMode_" + MD5Utils.md5Encode(rssSourceKey(source)))
}
fun setRssLayout(source: RssSource, value: Int) {
App.INSTANCE.putPrefInt("rssLayoutMode_" + MD5Utils.md5Encode(rssSourceKey(source)), value)
}
}
val Context.channel: String

@ -55,6 +55,7 @@ class RssArticlesFragment : VMBaseFragment<RssArticlesViewModel>(R.layout.fragme
}
fun switchLayout() {
refresh_recycler_view.startLoading()
initView()
initData()
}
@ -62,7 +63,7 @@ class RssArticlesFragment : VMBaseFragment<RssArticlesViewModel>(R.layout.fragme
private fun initView() {
ATH.applyEdgeEffectColor(recycler_view)
var rssLayoutConfig = AppConfig.rssLayout
var rssLayoutConfig = activityViewModel.rssSource?.let { AppConfig.getRssLayout(it) }
var layoutId = R.layout.item_rss_article
if (rssLayoutConfig == 1)
layoutId = R.layout.item_rss_article_1
@ -70,7 +71,8 @@ class RssArticlesFragment : VMBaseFragment<RssArticlesViewModel>(R.layout.fragme
layoutId = R.layout.item_rss_article_2
if (rssLayoutConfig == 2) {
recycler_view.padding = 8
recycler_view.setPadding(8, 0, 8, 0)
recycler_view.layoutManager = GridLayoutManager(requireContext(), 2)
while (recycler_view.itemDecorationCount > 0)
recycler_view.removeItemDecorationAt(0)

@ -79,9 +79,10 @@ class RssSortActivity : VMBaseActivity<RssSortViewModel>(R.layout.activity_rss_a
/** 切换布局 */
private fun switchLayout() {
var i = AppConfig.rssLayout + 1
if (viewModel.rssSource == null) return
var i = AppConfig.getRssLayout(viewModel.rssSource!!) + 1
if (i > 2) i = 0
AppConfig.rssLayout = i
AppConfig.setRssLayout(viewModel.rssSource!!, i)
fragments?.forEach {
it.value?.switchLayout()
};

@ -8,7 +8,7 @@
<ImageView
android:id="@+id/image_view"
android:layout_width="0dp"
android:layout_height="200dp"
android:layout_height="220dp"
android:contentDescription="@string/loading"
android:visibility="visible"
android:scaleType="centerCrop"

@ -2,10 +2,10 @@
<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="5dp"
android:paddingTop="6dp"
android:paddingLeft="4dp"
android:paddingTop="8dp"
android:paddingBottom="6dp"
android:paddingRight="5dp"
android:paddingRight="4dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">

Loading…
Cancel
Save