ユーザーが選択した背景色を取得したら、それを共有設定に保存できます。次に、各アクティビティのonCreateで、sharedpreference値を受け取り、背景色を設定できます。
背景色の設定は簡単です。
view.setBackgroundColor(Color.GREEN);
sharedpreferencesを操作するには:
SharedPreferences sp = getSharedPreferences("color", MODE_PRIVATE);
String color = sp.getString("colorChoice", "BLACK");
上記のコードは、sharedpreferences型の変数を宣言しています。「color」はグループのようなものです。次に、sp.getString()を呼び出すString変数を宣言します。「BLACK」がデフォルト値です。
共有設定に保存するには:
Editor edit = sp.edit();
edit.putString("colorChoice", "Whatever the user selects here");
edit.commit();
上記のコードは、ユーザーが背景の色を選択するときに使用できます。
ここで、アクティビティ内のすべてのビューで機能させたい場合は、引数としてビューを持つメソッドを作成するか(ビューごとにこのメソッドを呼び出す必要があります)、ビューグループを使用してその子を呼び出します。このようなもの:
private void unbindDrawables(View view){
if (view.getBackground() != null){
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup){
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++){
unbindDrawables(((ViewGroup) view).getChildAt(i));
}//for loop
try {
((ViewGroup) view).removeAllViews();
} catch (UnsupportedOperationException e) {
e.printStackTrace();
}
}
この方法では背景色が設定されないことに注意してください。これは、viewgroupを使用し、各ビューを再帰的に呼び出す例にすぎません。上記の方法は、特にビットマップのビューをクリアするために使用されます。