@Override public boolean onTouchEvent(MotionEvent event) { boolean update = false; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mStartTouchPoint = new Point((int) event.getX(), (int) event.getY()); update = moveTrackersIfNeeded(event); break; case MotionEvent.ACTION_MOVE: update = moveTrackersIfNeeded(event); break; case MotionEvent.ACTION_UP: mStartTouchPoint = null; update = moveTrackersIfNeeded(event); break; } if (update) { if (mListener != null) { mListener.onColorChanged(Color.HSVToColor(mAlpha, new float[] {mHue, mSat, mVal})); } invalidate(); return true; } return super.onTouchEvent(event); }
@Override public boolean onTrackballEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); boolean update = false; if (event.getAction() == MotionEvent.ACTION_MOVE) { switch (mLastTouchedPanel) { case PANEL_SAT_VAL: float sat, val; sat = mSat + x / 50f; val = mVal - y / 50f; if (sat < 0f) { sat = 0f; } else if (sat > 1f) { sat = 1f; } if (val < 0f) { val = 0f; } else if (val > 1f) { val = 1f; } mSat = sat; mVal = val; update = true; break; case PANEL_HUE: float hue = mHue - y * 10f; if (hue < 0f) { hue = 0f; } else if (hue > 360f) { hue = 360f; } mHue = hue; update = true; break; } } if (update) { if (mListener != null) { mListener.onColorChanged(Color.HSVToColor(mAlpha, new float[] {mHue, mSat, mVal})); } invalidate(); return true; } return super.onTrackballEvent(event); }
@Override public void onClick(View v) { if (v.getId() == R.id.new_color_panel) { if (mListener != null) { mListener.onColorChanged(mNewColor.getColor()); } } dismiss(); }
/** * Change the color of the center which indicates the new color. * * @param color int of the color. */ public void setNewCenterColor(int color) { mCenterNewColor = color; mCenterNewPaint.setColor(color); if (mCenterOldColor == 0) { mCenterOldColor = color; mCenterOldPaint.setColor(color); } if (onColorChangedListener != null) { onColorChangedListener.onColorChanged(color); } invalidate(); }
public void setColor(int color, boolean callback) { int alpha = Color.alpha(color); int red = Color.red(color); int blue = Color.blue(color); int green = Color.green(color); float[] hsv = new float[3]; Color.RGBToHSV(red, green, blue, hsv); mAlpha = alpha; mHue = hsv[0]; mSat = hsv[1]; mVal = hsv[2]; if (callback && mListener != null) { mListener.onColorChanged(Color.HSVToColor(mAlpha, new float[] {mHue, mSat, mVal})); } invalidate(); }