2012-03-28 3 views
0

sharedPrefereces에서 사용하는 색상 선택 도구가 있습니다. 기본 colorpicker로 내가 원하는 것을 얻을 수 있었지만 검정색이나 흰색 색상이 없다는 것을 알았습니다. http://www.yougli.net/android/a-photoshop-like-color-picker-for-your-android-application/ 이 코드를 사용하고 싶지만 마지막 행에서 예를 보여줍니다. 여기서는이 코드가 기본 화면에 첨부 된 것을 볼 수 있습니다. 그 대신에 나는 자신의 활동을 버튼으로 공유 환경 설정을 사용하여 데이터/값을 저장할 수 있습니다 (그래서 preferenceActivity가 아니라 Activity). 예를 들어 레이아웃을 클릭하면 결과 :preferenceActivity없이 다른 색상 선택기를 사용하려면 어떻게해야합니까?

OptVertexColor = (LinearLayout) findViewById(R.id.OptVC); 
     OptVertexColor.setOnClickListener(new View.OnClickListener() { 
     @Override 
      public void onClick(View v) { 
      LoadChartVertexColor(); 
       ColorPickerDialog dlg = new ColorPickerDialog(settings.this, 
          new ColorPickerDialog.OnColorChangedListener() { 
         public void colorChanged(int color) { 
          SaveChartVertexColor("vertexcolor", color); 
         } 
        }, loadedVertexColor); 
        dlg.setTitle("Select new color"); 

        dlg.show(); 
       } 
     }); 

기본 색상 선택 대화 상자가 나타나고 색상을 저장할 수 있습니다. 이제 어떻게하면 환경 설정 화면없이 이것을 사용할 수 있고 똑같은 일을 할 수 있습니까? 위의 코드를이 코드에 복사하려고 시도했지만이를 처리하는 방법을 알아 냈습니다.

public class MySettings extends PreferenceActivity implements OnPreferenceClickListener, ColorPickerDialog.OnColorChangedListener { 

    public boolean onPreferenceClick(Preference pref) 

    { 

     new ColorPickerDialog(this, this, DROIDS_COLOR_KEY, mPrefs.getInt(DROIDS_COLOR_KEY, DROIDS_COLOR_DEFAULT), DROIDS_COLOR_DEFAULT).show(); 

     return true; 

    } 

    public void colorChanged(String key, int color) 

    { 

     ((PreferenceScreen)this.findPreference(SETTINGS_KEY)).getEditor().putInt(key, color).commit(); 

    } 

} 

감사합니다. 자신의 활동에

답변

0

, 클래스 선언에

implements ColorPickerDialog.OnColorChangedListener 

를 추가합니다.

클래스 본체에 추가
public void colorChanged(String key, int color) { 
     //create your SharedPreferences and your SharedPreferences.Editor here 
     editor.putInt(key, color); 
     editor.commit();  
    } 

그리고 버튼 클릭 리스너에서

추가 :이 작업을해야

new ColorPickerDialog(this, this, DROIDS_COLOR_KEY, mPrefs.getInt(DROIDS_COLOR_KEY, DROIDS_COLOR_DEFAULT), DROIDS_COLOR_DEFAULT).show(); 

. 내가 당신의 질문에 답하지 못했을 때 알려주면 내가 할 수있는 일을 볼 수 있습니다.

+0

몇 시간 만에해볼 수있어서 감사합니다. :) –

+0

글쎄, 거기에 몇 가지 문제가 있습니다. 첫 번째 : 두 번째는 onColorChangedListener 여야하며이 글을 쓰면 onClickListener입니다. 두 번째로 DROIDS_COLOR_KEY 또는 DEFAULT가 없으며 시스템에 알 수 없습니다. –

+0

당신은 ColorPickerDialog (..)을 위해 무엇을 써야하는지 알고 있습니까? DROIDS_COLOR_KEY를 색상으로 대체하여 두 번째 "this"문제를 해결할 수 있습니다. –

관련 문제