【发布时间】:2021-02-20 06:04:37
【问题描述】:
我想让用户在 BackgroundActivity 中选择带有动画的背景颜色,并将更改后的背景颜色保存到 MainActivity。
当用户点击 MainActivity 上的backgroundChange 按钮时,它会移动到 BackgroundActivity。然后有几种不同的颜色可供选择。用户在 BackgroundActivity 上选择颜色后单击 Save 按钮后,它将返回 MainAcitivity。我的问题是我不知道如何将更改后的背景颜色从 BackgroundAcivity 保存到 MainAcivity。
作为一个初学者,我不能很好地理解如何使用 SharedPreferences。 我检查了几个视频并搜索了几个小时的许多问题,但我仍然无法弄清楚如何在我自己的代码中正确使用 SharedPreferences。
BackgroundAcivity 真的很长,我只会放第一部分。你能告诉我如何保存这个背景更改吗?
MainActivity
public class MainActivity extends AppCompatActivity {
Button backgroundChange;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
backgroundChange = findViewById(R.id.backgroundChange);
backgroundChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, BackgroundActivity.class);
startActivity(intent);
}
});
}
}
BackgroundActivity
public class BackgroundActivity extends AppCompatActivity {
Button btn_blue, btn_purple, btn_orange, btn_save;
View holderBg, dynamicBg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_background);
btn_save = findViewById(R.id.btn_save);
btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(BackgroundActivity.this, MainActivity.class);
startActivity(intent);
}
});
btn_blue = findViewById(R.id.btn_blue);
btn_purple = findViewById(R.id.btn_purple);
btn_orange = findViewById(R.id.btn_orange);
holderBg = findViewById(R.id.holderBg);
dynamicBg = findViewById(R.id.dynamicBg);
//set the first-time background
holderBg.setBackgroundResource(R.drawable.bg_blue);
holderBg.setScaleY(3);
holderBg.setScaleX(3);
//set the scale of button clicked
btn_blue.setScaleY(1.5f);
btn_blue.setScaleX(1.5f);
btn_blue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//scale animation
btn_blue.animate().translationY(20).scaleX(1.5f).scaleY(1.5f).setDuration(800).start();
//default the scale buttons
btn_purple.animate().translationY(0).scaleX(1).scaleY(1).setDuration(350).start();
btn_orange.animate().translationY(0).scaleX(1).scaleY(1).setDuration(350).start();
//change the background
dynamicBg.animate().scaleX(3).scaleY(3).setDuration(800).start();
dynamicBg.setBackgroundResource(R.drawable.bg_blue);
//change color of button
btn_save.setTextColor(Color.parseColor("#3498db"));
//timer for change the holderbg
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
holderBg.setScaleX(3);
holderBg.setScaleY(3);
holderBg.setBackgroundResource(R.drawable.bg_blue);
dynamicBg.setScaleX(0);
dynamicBg.setScaleY(0);
}
}, 850);
}
});
}
}
【问题讨论】:
-
据我了解,您想保存当前背景,并将其用于其他活动?我说的对吗?
-
@A.R.B.N 是的。 MainActivity 上有一个按钮。如果它点击,那么它会转到BackgroundActivity。然后有一些选项可以在 BackgroundActivity 上更改颜色。当用户单击 BackgroundActivity 上的 Save 按钮时,我想保存它更改颜色并返回 MainActivity 并继续使用更改后的颜色。
-
@A.R.B.N 我编辑了我的问题以使其清楚。
标签: java android sharedpreferences