android studio保存上次选择的背景图像
我创建了一个简单的代码来更改按钮单击时的图像背景,但问题是在更改背景图像并关闭应用程序并再次打开后,背景图像将返回默认图像,我希望保存更改后的图像背景并在下次启动我的应用程序时显示它 这是我的密码:android studio保存上次选择的背景图像,android,Android,我创建了一个简单的代码来更改按钮单击时的图像背景,但问题是在更改背景图像并关闭应用程序并再次打开后,背景图像将返回默认图像,我希望保存更改后的图像背景并在下次启动我的应用程序时显示它 这是我的密码: button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int bg = 0;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int bg = 0;
if (x[0] == 5) x[0] = 1;
if (x[0] == 1) bg = R.drawable.bg1;
if (x[0] == 2) bg = R.drawable.bg2;
if (x[0] == 3) bg = R.drawable.bg3;
if (x[0] == 4) bg = R.drawable.bg4;
if (x[0] == 5) bg = R.drawable.bg5;
layout.setBackgroundResource(bg);
x[0]++;
}
});
我建议您创建一个xml或json文件来存储图像数组,并在更改时重新排列此列表 下面的示例显示了一个汽车列表,每次我更改主汽车列表的顺序时,它都是列表中的第一个
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="list_sorted_data">[3,1,2]</string>
</map>
[3,1,2]
您所做的工作示例请参见实际操作
如果看不到所有内容,则转到2分钟40秒。您可以使用SharedReference保存和存储图像文件的id。。启动应用程序时,从活动的onCreate()中的共享首选项中获取此int值,并在每次更改时进行设置
SharedPreferences mPreferences
int currentBackground;
onCreate() {
mPreferences = getSharedPreferences("MySahredPrefs", MODE_PRIVATE);
int currentBackground = sharedPrefs.getInt("MyBackground", R.drawable.bg1); // <<< getting the background from the shared preference
layout.setBackgroundResource(currentBackground);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int bg = 0;
if (x[0] == 5) x[0] = 1;
if (x[0] == 1) bg = R.drawable.bg1;
if (x[0] == 2) bg = R.drawable.bg2;
if (x[0] == 3) bg = R.drawable.bg3;
if (x[0] == 4) bg = R.drawable.bg4;
if (x[0] == 5) bg = R.drawable.bg5;
layout.setBackgroundResource(bg);
SharedPreferences.Editor preferencesEditor = mPreferences.edit();
preferencesEditor.putInt("MyBackground", bg); // <<<<<<<< setting the background to the shared preference
preferencesEditor.apply();
x[0]++;
}
});
}
SharedReferences mPreferences
背景;
onCreate(){
mPreferences=getSharedReferences(“MySahredPrefs”,MODE_PRIVATE);
int currentBackground=sharedPrefs.getInt(“MyBackground”,R.drawable.bg1);//据我所知,您应该能够通过共享首选项轻松完成这项工作
然后在启动时检索int并翻转背景
SharedPreferences preferences;
SharedPreferences.Editor editor;
@Override
protected void onCreate(bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity);
preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
editor = preferences.edit();
//I used a separate method to keep clutter out of onCreate but its up to you, doesn't matter.
setBackground();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setBackground();
}
});
}
//Here we just grab the id, and assign the background.
public void setBackground(){
int id = preferences.getInt("backgroundid",1);
int bg = 0;
if (id == 1) bg = R.drawable.bg1;
if (id == 2) bg = R.drawable.bg2;
if (id == 3) bg = R.drawable.bg3;
if (id == 4) bg = R.drawable.bg4;
if (id == 5) bg = R.drawable.bg5;
layout.setBackgroundResource(bg);
editor.putInt("backgroundid",id++);
editor.commit();
}