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

时间:2015-10-23 11:44:40

标签: android user-interface android-activity background

我希望能够更改我的应用的背景颜色,以便每当我想在运行时更改颜色时,我只需按应用中的按钮可更改背景颜色。在改变颜色之后,我希望每当我再次打开应用程序时留在那里。此外,我想知道如何在我进行另一项活动时更改其他活动的颜色。 提前致谢。 my 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>

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>

2 个答案:

答案 0 :(得分:2)

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

使用所有其他活动将派生的共同基础活动类,并在&#34; OnCreate&#34;和&#34; OnResume&#34;方法编写代码来读取共享偏好值并应用背景颜色。这样当你打开任何活动时,将会应用选定的背景颜色。

尝试以下代码,经过测试并正常工作。

BaseActivity Class

 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();
        }
    }

活动类

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);


    }


}

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>

答案 1 :(得分:1)

为了做这样的事情,你可以维护一个数据库来存储不同颜色的值。

现在,只要在为应用程序选择特定颜色后按下按钮,就必须更新数据库中的颜色值。

在MainActivity(Launcher Activity)的onCreate()方法中,您只需从数据库字段中检索颜色值,并在应用程序中进行设置。