Android 圆形颜色拾取器代码,android 颜色拾取控件 ColorPickerDialog
效果:
源碼:
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;
總結
以上是生活随笔為你收集整理的Android 圆形颜色拾取器代码,android 颜色拾取控件 ColorPickerDialog的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【微信网页直接下载app】微信跳转-微信
- 下一篇: 布局管理器android,Android