2014-05-09 1 views
1

내 앱에서 설정 활동을하려고하는데 사용자가 배경색을 변경할 수있는 환경 설정을 어떻게 할 수 있는지 궁금합니다.설정에서 배경색 변경

나는 이미 설정 작업을 완료했으며, 사용자가 "색상"옵션을 클릭하면 사용자가 설정할 수있는 다양한 색상을 표시하거나 (또는 ​​더 나은 색상 표와 함께) 팔레트와 함께 하위 세트 작업을 수행 할 생각이었습니다. 사용할 수있는 모든 색상).

어떻게 알 수 있습니까?

+1

http://stackoverflow.com/questions/2442407/android-color-picker – Sripathi

+0

@Sripathi 링크 주셔서 감사합니다 색상 팔레트이를 참조하지만, 나는 그것의 가이드 – Solaire

답변

1

이미 설정 활동을 만들었습니다 잘 경우,이 값이 XML을 생성 폴더에 다음이

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 

    <PreferenceCategory android:title="Background Color Settiongs" > 
     <ListPreference 
      android:defaultValue="#111111" 
      android:entries="@array/colorName" 
      android:entryValues="@array/colorCode" 
      android:key="background_color" 
      android:summary="Set background color of app" 
      android:title="Colors" /> 
    </PreferenceCategory> 
</PreferenceScreen> 

같은 기본 카테고리를 추가하려면 환경 설정 XML에서이

public class NormalSettingsActivity extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.normal_preferences); 
    } 
} 

에 비슷한 것 소위 배열

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="colorName"> 
     <item name="0">Red</item> 
     <item name="1">Black</item> 
     <item name="2">Yellow</item> 
     <item name="3">White</item> 
    </string-array> 
    <string-array name="colorCode"> 
     <item name="0">#ff0000</item> 
     <item name="1">#111111</item> 
     <item name="2">#ffff33</item> 
     <item name="3">#ffffff</item> 
    </string-array> 
</resources> 

귀하의 활동에 단순히 backgroun

backgroundLayout.setBackgroundColor(Color.parseColor(mPreferenceManager.getDefaultSharedPreferences().getString("background_color", "#111111"))); 
여기

"BACKGROUND_COLOR"을 사용하여 D 색상 환경 설정 XML에서 오는 (안드로이드 : 키 = "BACKGROUND_COLOR")

는 "# 111111"는 일치하는

을 찾을 수없는 경우 설정됩니다 몇 가지 기본 색상입니다

으로, 전역 변수를

protected PreferencesManager mPreferenceManager; 

을 만들어에서 onCreate에서 초기화하는 것을 잊지 마세요

mPreferenceManager = PreferencesManager.instance(this); 
+0

내가 돈을 이해할 수 없었다 당신에게 감사하는 법을 모르겠다, 당신의 대답은 끝났습니다. 배경 작업을 수행하는 마지막 절차가 저에게 효과가 없다는 것을 지적하고 싶습니다. 'RelativeLayout rl = (RelativeLayout) findViewById (R.id.container); \t \t \t \t SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences (this); \t \t int bgc = Color.parseColor (sharedPref.getString ("background_color", "# 000000"))); \t \t rl.setBackgroundColor (bgc); ' 문제는 내가 화면 밖으로 화살표로 돌아 가면 – Solaire

+0

설정에서 매우 동일한 문제에 직면했습니다. 여기서 트릭은 onResume 액티비티 메소드에서 setbackground 메소드를 호출하는 것입니다. 그리고 저에게 고마움을 표할 때 항상 내 대답을 받아 들일 수 있습니다 :-) – Kaustuv

+0

아 맞아요, 그 대답은 너무도 명백했습니다! 대단히 감사합니다. 즉시 수락합니다.) – Solaire