如何永久更改应用程序的背景颜色

pro*_*oid 6 user-interface android background android-activity

我希望能够更改我的应用程序的背景颜色,以便每当我想在运行时更改颜色,我只需按下应用程序中的按钮即可更改背景颜色.在改变颜色之后,我希望每当我再次打开应用程序时它应该留在那里.此外,我想知道如何在我进行另一项活动时更改其他活动的颜色.提前致谢.我的colors.xml:

<resources>
<color name="original">#25383C</color>
<color name="grey">#484849</color>
<color name="red">#881A27</color>
<color name="orange">#ffa500</color>
<color name="yellow">#CDE707</color>
<color name="green">#00ff00</color>
<color name="aqua">#00FFCC</color>
<color name="marine">#0C0C84</color>
<color name="purple">#630A86</color>
<color name="silver">#c0c0c0</color>
Run Code Online (Sandbox Code Playgroud)

styles.xml(它有主题):

<resources>
<style name="original">
    <item name="android:background">#25383C</item>
</style>
<style name="grey">
    <item name="android:background">#484849</item>
</style>
<style name="red">
    <item name="android:background">#881A27</item>
</style>
<style name="orange">
    <item name="android:background">#ffa500</item>
</style>
<style name="yellow">
    <item name="android:background">#CDE707</item>
</style>
<style name="green">
    <item name="android:background">#00ff00</item>
</style>
<style name="aqua">
    <item name="android:background">#00FFCC</item>
</style>
<style name="marine">
    <item name="android:background">#0C0C84</item>
</style>
<style name="purple">
    <item name="android:background">#630A86</item>
</style>
<style name="silver">
    <item name="android:background">#c0c0c0</item>
</style>
Run Code Online (Sandbox Code Playgroud)

Des*_*han 2

您可以使用 Android 共享首选项来记住为应用程序选择的背景颜色。因此,每次打开应用程序时,您都可以检查共享首选项的值并相应地应用颜色。

使用所有其他活动将派生的通用基活动类,并在“OnCreate”和“OnResume”方法中编写代码来读取共享首选项值并应用背景色。这样,当您打开任何活动时,所选的背景色将是应用。

尝试下面的代码,它已经过测试并且可以工作。

基础活动类

 public class BaseActivity extends ActionBarActivity {

        private static final String PREFS_NAME="color_settings";
        SharedPreferences prefsReader = null;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            prefsReader=getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        }

        @Override
        public void setContentView(int layoutResID) {
            super.setContentView(layoutResID);
            setBackgroundColor();
        }

        protected void setBackgroundColor()
        {
            int background_resource_id= prefsReader.getInt("background_resource_id",0);
            View bgView= findViewById(R.id.main_container);
            bgView.setBackgroundColor(getResources().getColor(background_resource_id));
        }
        protected void setCurrentBackgroundColor(int colorResourceId)
        {
            SharedPreferences.Editor editor=getSharedPreferences(PREFS_NAME, MODE_PRIVATE).edit();
            editor.putInt("background_resource_id", colorResourceId);
            editor.commit();
        }
    }
Run Code Online (Sandbox Code Playgroud)

活动课

public class MainActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //save the color resource value in shared pref
        setCurrentBackgroundColor(R.color.red);

        setContentView(R.layout.activity_main);


    }


}
Run Code Online (Sandbox Code Playgroud)

Colors.xml 颜色列表

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="blue" type="color">#FF33B5E5</item>
    <item name="purple" type="color">#FFAA66CC</item>
    <item name="green" type="color">#FF99CC00</item>
    <item name="orange" type="color">#FFFFBB33</item>
    <item name="red" type="color">#FFFF4444</item>
    <item name="darkblue" type="color">#FF0099CC</item>
    <item name="darkpurple" type="color">#FF9933CC</item>
    <item name="darkgreen" type="color">#FF669900</item>
    <item name="darkorange" type="color">#FFFF8800</item>
    <item name="darkred" type="color">#FFCC0000</item>
</resources>
Run Code Online (Sandbox Code Playgroud)