package misc; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Paint; import android.graphics.Shader; import android.view.View; @SuppressWarnings("ALL") public class Color_RGBField extends View { private final Paint mPaint; public float mCurrentHue = 0; public int mCurrentX = 0; public int mCurrentY = 255; public final int[] mHueBarColors = new int[258]; private final int[] mMainColors = new int[65536]; public int widgetSize; private int index; public float[] hsv4 = {0, 0, 1}; public float[] hsv5 = {0, 1, 1}; public Color_RGBField(Context context, int color, int defaultColor) { super(context); int mDefaultColor = defaultColor; mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); } @Override protected void onDraw(Canvas canvas) { mPaint.setStrokeWidth(16); float[] hsv4 = {0, 0, 0}; for (int x = 0; x < 32; x++) { float[] hsv5 = {mCurrentHue, (float) (x + 1) / 32f, 1}; int[] colors = new int[2]; colors[0] = Color.HSVToColor(hsv5); colors[1] = Color.HSVToColor(hsv4); Shader shader = new LinearGradient(0, 0, 0, 128, colors, null, Shader.TileMode.REPEAT); mPaint.setShader(shader); canvas.drawLine((x * 8) + 12, 0, (x * 8) + 12, 128, mPaint); } mPaint.setShader(null); mPaint.setStrokeWidth(2); mPaint.setStyle(Paint.Style.STROKE); mPaint.setColor(Color.BLACK); canvas.drawCircle(mCurrentX + 8, mCurrentY / 2, 6, mPaint); int mCurrentColor = mMainColors[index]; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(268, 128); } public void refresh() { invalidate(); } }