Android Open Source - Sketcher Alpha Picker






From Project

Back to project page Sketcher.

License

The source code is released under:

Apache License

If you think the Android project Sketcher listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.sketcher.colorpicker;
//from  w w  w  .j av a2 s .  c om
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.RectF;
import android.graphics.Shader;
import android.graphics.Shader.TileMode;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class AlphaPicker extends View implements Picker {
  private static final float PICKER_RADIUS = 4;

  private Picker.OnColorChangedListener mListener = null;
  private final Paint mColor = new Paint();
  private float[] mHsv = new float[3];
  private final Paint mGradient = new Paint(Paint.ANTI_ALIAS_FLAG);
  private final Paint mTrackerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

  public AlphaPicker(Context context, AttributeSet attrs) {
    super(context, attrs);
    mGradient.setStyle(Paint.Style.STROKE);

    mTrackerPaint.setStrokeWidth(1);
    mTrackerPaint.setColor(Color.WHITE);
    mTrackerPaint.setStyle(Style.STROKE);
  }

  @Override
  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    applyChages(w, h);
  }

  @Override
  public void setColor(int color) {
    mColor.setColor(color);

    mHsv = Utils.color2HSV(color);

    applyChages(getWidth(), getHeight());
  }

  private void applyChages(int w, int h) {
    int color = Color.HSVToColor(255, mHsv);
    int acolor = Color.HSVToColor(0, mHsv);

    Shader alphaShader = new LinearGradient(0, 0, w, 0, color, acolor,
        TileMode.CLAMP);

    mGradient.setShader(alphaShader);
    mGradient.setStrokeWidth(h);
    invalidate();
  }

  @Override
  public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    case MotionEvent.ACTION_MOVE:
      float x = Math.max(0, Math.min(getWidth(), event.getX()));
      int alpha = (int) ((1f - x / getWidth()) * 255f);
      mColor.setColor(Color.HSVToColor(alpha, mHsv));

      mListener.colorChanged(mColor);
      invalidate();
      return true;
    }

    return false;
  }

  @Override
  public void setOnColorChangedListener(OnColorChangedListener listener) {
    mListener = listener;
  }

  @Override
  protected void onDraw(Canvas canvas) {
    canvas.drawRect(0, PICKER_RADIUS, getWidth(), getHeight()
        - PICKER_RADIUS, mGradient);

    float x = (1f - mColor.getAlpha() / 255f) * getWidth();

    RectF rect = new RectF();
    rect.left = x - PICKER_RADIUS;
    rect.right = x + PICKER_RADIUS;
    rect.top = 0;
    rect.bottom = getHeight();

    canvas.drawRoundRect(rect, PICKER_RADIUS, PICKER_RADIUS, mTrackerPaint);
  }
}




Java Source Code List

org.sketcher.AboutDialog.java
org.sketcher.Controller.java
org.sketcher.FileHelper.java
org.sketcher.HistoryHelper.java
org.sketcher.SketcherApplication.java
org.sketcher.Sketcher.java
org.sketcher.Style.java
org.sketcher.Surface.java
org.sketcher.colorpicker.AlphaPicker.java
org.sketcher.colorpicker.HuePicker.java
org.sketcher.colorpicker.PickerDialog.java
org.sketcher.colorpicker.Picker.java
org.sketcher.colorpicker.PreviewView.java
org.sketcher.colorpicker.SatValPicker.java
org.sketcher.colorpicker.Utils.java
org.sketcher.style.ChromeStyle.java
org.sketcher.style.CirclesStyle.java
org.sketcher.style.EraserStyle.java
org.sketcher.style.FurStyle.java
org.sketcher.style.GridStyle.java
org.sketcher.style.LongfurStyle.java
org.sketcher.style.RibbonStyle.java
org.sketcher.style.ShadedStyle.java
org.sketcher.style.SimpleStyle.java
org.sketcher.style.SketchyStyle.java
org.sketcher.style.SquaresStyle.java
org.sketcher.style.StylesFactory.java
org.sketcher.style.WebStyle.java