如何在没有preferenceActivity的情况下使用另一个颜色选择器



我有一个颜色选择器,我在sharedPreferences中使用它。使用默认的颜色选择器,我成功地实现了我想要的,但我注意到没有黑色或白色。http://www.yougli.net/android/a-photoshop-like-color-picker-for-your-android-application/我想使用这段代码,但在最后一行,他展示了一个例子,我可以看到它被附加到一个首选屏幕上。相反,我使用自己的活动和按钮,在这些按钮中,我可以使用共享的首选项保存数据/值(所以这不是首选项活动,只是一个活动)。例如,点击布局结果:

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

提前谢谢!

在您自己的"活动"中,添加

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

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

最新更新