Как я могу использовать другую палитру цветов без preferenceActivity? - PullRequest
0 голосов
/ 29 марта 2012

У меня есть палитра цветов, которую я использую в sharedPrefereces. С помощью палитры цветов по умолчанию мне удалось получить то, что я хочу, но я заметил, что нет черного или белого цветов. http://www.yougli.net/android/a-photoshop-like-color-picker-for-your-android-application/ Я хотел бы использовать этот код, но в последних строках он показывает пример, где я вижу, что он прикреплен к предпочтительному экрану. Вместо этого я использую свою собственную активность с кнопками, где с помощью общих настроек я могу сохранять данные / значения (поэтому это не preferenceActivity, а просто Activity) Например, нажав на результаты макета:

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();

    }

}

Заранее спасибо!

1 Ответ

0 голосов
/ 29 марта 2012

В своей собственной Деятельности добавьте

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();

Это должно работать.Дайте мне знать, если вы мне не ответите на ваш вопрос, и я посмотрю, что я могу сделать.

...