代码
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 ...我将颜色设置为按钮没有问题但是我想保存它...就像我退出活动然后再次启动它一样,颜色恢复为默认值...我不想要那个..我希望按钮具有我设置的以前的颜色。 。我该如何实现..请帮助
答案 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"
,但是您选择的键值将特定于此颜色值存储在首选项中。