Android 圆形颜色拾取器代码,android 颜色拾取控件 ColorPickerDialog

效果:

a4c26d1e5885305701be709a3d33442f.png

源码:

package com.dwood.paintdemo;

import android.app.Dialog;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.LinearGradient;

import android.graphics.Paint;

import android.graphics.RectF;

import android.graphics.Shader;

import android.graphics.SweepGradient;

import android.os.Bundle;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.view.WindowManager;

public class ColorPickerDialog extends Dialog {

private final boolean debug = true;

private final String TAG = "ColorPicker";

Context context;

private String title;//标题

private int mInitialColor;//初始颜色

private

OnColorChangedListener mListener;

public

ColorPickerDialog(Context context, String title,

OnColorChangedListener

listener) {

this(context, Color.BLACK, title,

listener);

}

public

ColorPickerDialog(Context context, int initialColor,

String title,

OnColorChangedListener listener) {

super(context);

this.context = context;

mListener = listener;

mInitialColor = initialColor;

this.title = title;

}

@Override

protected

void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

WindowManager manager = getWindow().getWindowManager();

int height = (int)

(manager.getDefaultDisplay().getHeight() * 0.5f);

int width = (int)

(manager.getDefaultDisplay().getWidth() * 0.7f);

ColorPickerView myView = new

ColorPickerView(context, height, width);

setContentView(myView);

setTitle(title);

}

private

class ColorPickerView extends View {

private Paint mPaint;//渐变色环画笔

private Paint mCenterPaint;//中间圆画笔

private Paint mLinePaint;//分隔线画笔

private Paint mRectPaint;//渐变方块画笔

private Shader rectShader;//渐变方块渐变图像

private float rectLeft;//渐变方块左x坐标

private float rectTop;//渐变方块右x坐标

private float rectRight;//渐变方块上y坐标

private float rectBottom;//渐变方块下y坐标

private final int[] mCircleColors;//渐变色环颜色

private final int[] mRectColors;//渐变方块颜色

private int mHeight;//View高

private int mWidth;//View宽

private float r;//色环半径(paint中部)

private float centerRadius;//中心圆半径

private boolean downInCircle =

true;//按在渐变环上

private boolean downInRect;//按在渐变方块上

private boolean highlightCenter;//高亮

private boolean highlightCenterLittle;//微亮

public ColorPickerView(Context

context, int height, int width) {

super(context);

this.mHeight

= height - 36;

this.mWidth =

width;

setMinimumHeight(height

- 36);

setMinimumWidth(width);

//渐变色环参数

mCircleColors = new int[] {0xFFFF0000,

0xFFFF00FF, 0xFF0000FF,

0xFF00FFFF,

0xFF00FF00,0xFFFFFF00, 0xFFFF0000};

Shader s = new SweepGradient(0, 0, mCircleColors,

null);

mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

mPaint.setShader(s);

mPaint.setStyle(Paint.Style.STROKE);

mPaint.setStrokeWidth(50);

r = width / 2 * 0.7f - mPaint.getStrokeWidth() * 0.5f;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值