사용자가 선택한 배경색을 얻으면 공유 미리보기에 저장할 수 있습니다. 그런 다음 각 액티비티의 onCreate에서 sharedpreference 값을 받고 백그라운드 색을 설정할 수 있습니다.
배경 색상을 설정하는 것은 간단하다
view.setBackgroundColor(Color.GREEN);
가 된 SharedPreferences와 함께 작동하도록 :
는
SharedPreferences sp = getSharedPreferences("color", MODE_PRIVATE);
String color = sp.getString("colorChoice", "BLACK");
위의 코드는 타입 된 SharedPreferences의 변수를 선언한다 : "색상"그룹 같다. 그런 다음 sp.getString()을 호출하는 String 변수를 선언합니다. "BLACK"이 기본값입니다.
및
가 된 SharedPreferences에 저장 : 사용자가 배경이되고 싶어 무슨 색깔 선택하면
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();
}
}
참고. 이는 뷰 그룹을 사용하고 각 뷰를 재귀 적으로 호출하는 예제 일뿐입니다. 위의 방법은 비트 맵의보기, 특히 비트 맵을 지우는 데 사용됩니다.
현재 SharedPreferences에서 값을 설정하고 onCreate에서 값을 검색하고 설정하는 것과 동일한 작업을 수행하고 있습니다. 그러나 앞에서 언급했듯이 이것은 모든 관점에 대해 반복적으로 적용되어야합니다. 그래서 저는 그 작업을 줄이는 방법을 원합니다. – abhijitsinghh