diff --git a/app/src/main/java/io/legado/app/help/AppConfig.kt b/app/src/main/java/io/legado/app/help/AppConfig.kt index c423385e4..5dde9aa40 100644 --- a/app/src/main/java/io/legado/app/help/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/AppConfig.kt @@ -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 diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesFragment.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesFragment.kt index fe326edad..4d174ab4a 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesFragment.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssArticlesFragment.kt @@ -55,6 +55,7 @@ class RssArticlesFragment : VMBaseFragment(R.layout.fragme } fun switchLayout() { + refresh_recycler_view.startLoading() initView() initData() } @@ -62,7 +63,7 @@ class RssArticlesFragment : VMBaseFragment(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(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) diff --git a/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt b/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt index de460a6ce..3f5dbc0e7 100644 --- a/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/article/RssSortActivity.kt @@ -79,9 +79,10 @@ class RssSortActivity : VMBaseActivity(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() }; diff --git a/app/src/main/res/layout/item_rss_article_1.xml b/app/src/main/res/layout/item_rss_article_1.xml index e5f75251a..a030e477a 100644 --- a/app/src/main/res/layout/item_rss_article_1.xml +++ b/app/src/main/res/layout/item_rss_article_1.xml @@ -8,7 +8,7 @@