例如,保存设置文件以更改背景主题的好方法是什么?

时间:2019-07-11 04:24:22

标签: android sqlite android-studio kotlin

我一直在做一些工作,我找不到完成的方法,我想使用我的应用程序的设置和文件进行活动,这些设置和文件将更改颜色,深色主题,按钮等。

我对应该如何应用这些更改也有一些疑问,首先要想到的是onCreate,但是由于这需要重新加载,因此这是个好方法,例如将font collor更改为white,将background更改为black深色主题选项?

另一个疑问在于更改按钮位置。可以说我想要4个按钮的位置,我可以将所有这4个按钮都设置为“ GONE”并将视图设置为“ GONE”,但是就性能而言,这似乎是一个坏主意。如果这是一个坏主意还是有更好的方法呢?

我有一个从sqlite数据库加载的回收者视图。

我浏览了这份文档:https://developer.android.com/training/data-storage/shared-preferences,但仍然有一些疑问,可以说按钮位置1234和深色主题为是/否。

如何将一个布尔值和一个Int存储在分开的文件中?还是我应该存储一个读取的文本文件,然后将其像位置1的1t和深色主题true一样加载到我的应用中?

我想为我的应用进行非常完整的设置活动。

我非常感谢您可以提供的任何帮助或建议。

3 个答案:

答案 0 :(得分:1)

AppCompatDelegate.setDefaultNightMode()上进行阅读,这是根据用户一天中的时间(白天模式/夜间模式)动态更改主题和颜色的一种方法。我认为您也使问题变得过于复杂,只需为要显示的不同屏幕创建不同的布局文件和样式,然后根据需要使用它们,而不是尝试使用一个文件来做所有事情。

答案 1 :(得分:1)

为所需的不同“主题”创建不同的样式。

这里是一个示例,您可以了解如何在“设置”页面中创建不同的主题并进行实时更改。 https://github.com/RoudyK/DemoApp

基本上,设置片段是一个首选项片段,每个字符串都映射到一个样式枚举,该枚举引用了xml中定义的一种样式。

答案 2 :(得分:0)

Androidx设置活动解决了我的问题,因为它已经带有共享的首选项。

您可以访问首选项并使用以加载不同的布局,也可以尝试使用某些主题,但是我发现有关主题的全部内容已过时。

处理设置活动之外的偏好设置

open

val preference = this.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE)
val layoutType =  preference.getInt("layout_type", 0)

edit 

val preference = this.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE)
val editor = preference.edit()
val layoutType =  preference.getInt("layout_type", 0)
editor.putInt("layout_type",0)
editor.apply()

关于androidx活动

val prefs = PreferenceManager.getDefaultSharedPreferences(this)

并使用root_preferences.xml中的键

booleanbla = prefs.getBoolean(“ some_key”,false)

如果您有任何疑问,请留下不适的意见,编辑答案。