效果:

源码:

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相关推荐

  1. android建立电话拨号器代码,Android编写电话拨号器

    一.实现步骤 1.需要创建拨号意图 Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData ...

  2. Android之RemoteViews篇上————通知栏和桌面小控件

    Android之RemoteViews篇上----通知栏和桌面小控件 一.目录 文章目录 Android之RemoteViews篇上----通知栏和桌面小控件 一.目录 二.RemoteViews的概 ...

  3. android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题

    50_样式与主题 android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题 2013/5/12 50_样式与主题 ----------------- android样式和主题(st ...

  4. android menu item 显示,Android 如何通过menu id来得到menu item 控件 .

    Android 如何通过menu id来得到menu item 控件 . (2012-07-21 06:43:31) 标签: android 如何 杂谈 Android 如何通过menu id来得到m ...

  5. 《深入理解Android 卷III》第六章 深入理解控件(ViewRoot)系统

    <深入理解Android 卷III>即将发布,作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分. ...

  6. 【Android自定义View实战】之自定义评价打分控件RatingBar,可以自定义星星大小和间距...

    [Android自定义View实战]之自定义评价打分控件RatingBar,可以自定义星星大小和间距

  7. html设置控件位置大小,下面那个代码段设置myButton控件显示在HTML页左上角100px的位置 - 问答库...

    问题: [多选] 下面那个代码段设置myButton控件显示在HTML页左上角100px的位置?() A . B . C . D . 调度例行会议形式有什么() 生产平衡会. 事故分析会. 调度专业会 ...

  8. android swf 播放器代码,Android Flash swf播放器源码(2016),技术稳定可以商用—— BY softboy...

    Android Flash swf播放器源码(2016) 为什么说标题加上2016? 其实不是什么新技术,因为android4.1之后的android 浏览器内核版本发生了变化导致 Adobe 的Fl ...

  9. android swf 播放器代码,Android Flash swf播放器源码(2019)

    Android Flash swf播放器源码(2019) 为什么说标题加上2019? 其实不是什么新技术,因为android4.1之后的android 浏览器内核版本发生了变化导致 Adobe 的Fl ...

  10. android 圆形图片设置蒙层,Android引导蒙层,安卓新手引导图,引导图层,支持椭圆,圆形,矩形多种形状,一行代码快速搞定-Go语言中文社区...

    新手引导视图,初次打开页面时显示. 支持圆形,椭圆,矩形等多种图形 提示部分支持图片和文字提示 先看效果图 使用步骤. 使用起来特别简单,只需要把GuideView这个类复制到你的项目中就可以了 pa ...

最新文章

  1. Java Jtree渲染叶子实现可以添加swing组件
  2. ERP选型技巧之“三不要一要”
  3. 小而美的个人博客——前端——about
  4. 【竞赛相关】Kaggle活跃竞赛(12月汇总)
  5. python基础===使用switch方法,减少使用if语句
  6. H2内嵌数据库的使用
  7. 【转】如何修改Chrome缓存目录的地址
  8. wx.navigateTo跳转首页无效
  9. 微服务java模块内存管理_Java 9模块服务
  10. 不可思议的素数(上)(文末送书)
  11. U811.1接口EAI系列之六--物料上传--VB语言
  12. 公共端接正极还是负极_电动车通过增加电池来提高续航能力,到底是并联好还是串联好?...
  13. Python: 字符串
  14. LabView常用快捷键
  15. java自行车(java自行车)
  16. Thunderbolt3 方案介绍及应用案例介绍
  17. Linux网络服务——DHCP
  18. codeforces 1635E-Cars (二分图染色+拓扑排序)
  19. jsp027ssm洗衣店管理系统
  20. 3d渲染软件twinmotion2021中文版

热门文章

  1. virtualbox 装win95 win98
  2. 汇编语言程序设计技巧详解(附例题)
  3. 《概率论与数理统计》(浙大第四版)第五章总结笔记(纯手写)
  4. oracle删除临时会话表,新一代QQ群机器人
  5. java毕业设计——基于java+JavaBean+jsp的网上零食销售系统设计与实现(毕业论文+程序源码)——网上零食销售系统
  6. PHP 缓存 内存,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP
  7. 分享8个超酷的HTML5相册动画应用
  8. 用代码生成PDF文档的方法
  9. 做了一款股票复盘工具
  10. Tushare最好用的金融数据接口之一