@Override
  protected void onPrepareDialogBuilder(Builder builder) {
    super.onPrepareDialogBuilder(builder);
    OnColorChangedListener l =
        new OnColorChangedListener() {
          public void colorChanged(int color) {
            mCurrentColor = color;
            onDialogClosed(true);
            getDialog().dismiss();
          }
        };

    LinearLayout layout = new LinearLayout(getContext());
    layout.setPadding(20, 20, 20, 20);
    layout.setOrientation(LinearLayout.VERTICAL);
    mCPView = new ColorPickerView(getContext(), l, mCurrentColor);

    LinearLayout.LayoutParams params1 =
        new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    params1.gravity = Gravity.CENTER;
    mCPView.setLayoutParams(params1);
    layout.addView(this.mCPView);
    layout.setId(android.R.id.widget_frame);
    builder.setView(layout);
  }
    @SuppressLint("DrawAllocation")
    @Override
    protected void onDraw(Canvas canvas) {
      // 移动中心
      canvas.translate(mWidth / 2 - 50, mHeight / 2);
      // 画中心圆
      canvas.drawCircle(0, 0, mCenterRadius, mCenterPaint);
      // 是否显示中心圆外的小圆环
      if (mHighlightCenter || mlittleLightCenter) {
        int c = mCenterPaint.getColor();
        mCenterPaint.setStyle(Paint.Style.STROKE);
        if (mHighlightCenter) {
          mCenterPaint.setAlpha(0xFF);
        } else if (mlittleLightCenter) {
          mCenterPaint.setAlpha(0x90);
        }
        canvas.drawCircle(0, 0, mCenterRadius + mCenterPaint.getStrokeWidth(), mCenterPaint);

        mCenterPaint.setStyle(Paint.Style.FILL);
        mCenterPaint.setColor(c);
      }
      // 画色环
      canvas.drawOval(
          new RectF(-mCircleRadius, -mCircleRadius, mCircleRadius, mCircleRadius), mCirclePaint);
      // 画黑白渐变块
      if (mDownInCircle) {
        mRectColors[1] = mCenterPaint.getColor();
      }
      mRectShader =
          new LinearGradient(
              0, mRectTop, 0, mRectBottom, mRectColors, null, Shader.TileMode.MIRROR);
      mRectPaint.setShader(mRectShader);
      canvas.drawRect(mRectLeft, mRectTop, mRectRight, mRectBottom, mRectPaint);
      float offset = mLinePaint.getStrokeWidth() / 2;
      canvas.drawLine(
          mRectLeft - offset,
          mRectTop - offset * 2,
          mRectLeft - offset,
          mRectBottom + offset * 2,
          mLinePaint); // 左
      canvas.drawLine(
          mRectLeft - offset * 2,
          mRectTop - offset,
          mRectRight + offset * 2,
          mRectTop - offset,
          mLinePaint); // 上
      canvas.drawLine(
          mRectRight + offset,
          mRectTop - offset * 2,
          mRectRight + offset,
          mRectBottom + offset * 2,
          mLinePaint); // 右
      canvas.drawLine(
          mRectLeft - offset * 2,
          mRectBottom + offset,
          mRectRight + offset * 2,
          mRectBottom + offset,
          mLinePaint); // 下
      super.onDraw(canvas);
    }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    colorPickerDisk = new ColorPickerView(this);
    colorstring = "FF3030";
    // find the ID of View
    colorPickerDisk = (ColorPickerView) findViewById(R.id.colorPickerDisk);
    text_ColorDisk = (TextView) findViewById(R.id.text_ColorDisk);
    color_bg = (TextView) findViewById(R.id.color_bg);
    seek_bar = (SeekBar) findViewById(R.id.seek_bar);
    colorPickerDisk.setOnColorChangedListennerD(
        new ColorPickerView.OnColorChangedListenerD() {
          // 获取颜色值和RGB值(六位16进制数)
          @Override
          public void onColorChanged(int color, String hexStrColor) {
            // TODO Auto-generated method stub
            text_ColorDisk.setBackgroundColor(color);
            color_bg.setBackgroundColor(color);
            text_ColorDisk.setText("Color is " + hexStrColor);
            colorstring = hexStrColor;
            seek_bar.setProgress(0xff);
          }
        });
    seek_bar.setOnSeekBarChangeListener(
        new SeekBar.OnSeekBarChangeListener() {

          @Override
          public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub

          }

          @Override
          public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub

          }
          // 触发操作,拖动
          @Override
          public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            // 将十进制转为十六进制
            if (progress > 15) {
              transparence = Integer.toHexString(progress);
            } else {
              transparence = "0" + Integer.toHexString(progress);
            }
            text_ColorDisk.setText("transparency is :" + transparence);
            String color = "#" + transparence + colorstring;
            if (color.length() == 9) {
              text_ColorDisk.setBackgroundColor(Color.parseColor(color));
            }
          }
        });
  }
 @Override
 protected void onDialogClosed(boolean positiveResult) {
   if (positiveResult) {
     mCurrentColor = mCPView.getColor();
     summary.setTextColor(mCurrentColor);
     SharedPreferences.Editor editor = getEditor();
     editor.putInt(getKey(), mCurrentColor);
     editor.commit();
     callChangeListener(new Integer(mCurrentColor));
     NotePadPlus.SysSettings.BgClr = mCurrentColor;
   }
 }