如何在没有preferenceActivity的情况下使用其他颜色选择器?

时间:2012-03-28 22:12:06

标签: android color-picker preferenceactivity

我有一个颜色选择器,我在sharedPrefereces中使用。使用默认的颜色选择器,我设法实现我想要的,但我注意到没有黑色或白色。 http://www.yougli.net/android/a-photoshop-like-color-picker-for-your-android-application/ 我想使用这段代码,但在最后一行中,他展示了一个例子,我可以看到它附加到一个偏好的屏幕。而不是它我使用我自己的活动与使用共享首选项的按钮我可以保存数据/值(所以它不是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();

    }

}

提前谢谢!

1 个答案:

答案 0 :(得分: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();

这应该有效。如果你我没有回答你的问题,请告诉我,我会看到我能做些什么。