如何使用SharedPreference将颜色设置为视图?

时间:2018-07-28 09:19:10

标签: java android colors sharedpreferences

代码

public class Customise extends AppCompatActivity {

Button mButton;
int mDefaultColor;

SharedPreferences mSharedPreferences;
SharedPreferences.Editor editor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_customise);

        mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        editor = mSharedPreferences.edit();

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    mButton = (Button)findViewById(R.id.buttontextcolorsent);
    mDefaultColor = ContextCompat.getColor(Customise.this,R.color.white);
    mButton.setBackgroundColor(mDefaultColor);

    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openColorPicker();
        }
    });

}

private void openColorPicker() {
    AmbilWarnaDialog colorPicker = new AmbilWarnaDialog(this, mDefaultColor, new AmbilWarnaDialog.OnAmbilWarnaListener() {
        @Override
        public void onCancel(AmbilWarnaDialog dialog) {

        }

        @Override
        public void onOk(AmbilWarnaDialog dialog, int color) {

            mDefaultColor = color;
            mButton.setBackgroundColor(mDefaultColor);
            editor.putString("Color", String.valueOf(color));
            editor.commit();
        }
    });
    colorPicker.show();
}
}

我以前从未使用过共享首选项,并且没有太多关于如何在线更改颜色的示例,所以我不确定...我正在使用流行的颜色选择器库即AmbilWarna ...我将颜色设置为按钮没有问题但是我想保存它...就像我退出活动然后再次启动它一样,颜色恢复为默认值...我不想要那个..我希望按钮具有我设置的以前的颜色。 。我该如何实现..请帮助

1 个答案:

答案 0 :(得分:0)

使用此方法从SharedPreferences中读取存储的颜色(如果不存在,则将其用作默认的ContextCompat.getColor(Customise.this,R.color.white)):

mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
mDefaultColor = mSharedPreferences.getInt("default_color", 
ContextCompat.getColor(Customise.this,R.color.white));

并存储用户的选择:

    editor = PreferenceManager.getDefaultSharedPreferences(Customise.this).edit();
    editor.putInt("default_color", color);
    editor.apply();

您可以更改键值"default_color",但是您选择的键值将特定于此颜色值存储在首选项中。