Android 养成记-1 --1.3 标签拾色器
直接上图:
创建seekBarDialog ,并将拾色器集成到dialog 中:
public class MySeekBarDialog extends AlertDialog implements TextWatcher {private SeekBar seekBar;private EditText tView;private TextView titleTxv; //标题 private TextView msgTxv; //提示内容文字private TextView positiveTxv; //确定按钮 private TextView negativeTxv; //取消按钮 public static int mColor ;public static String mtagName;/* �Զ��幹�캯�����ڳ�ʼ�� */public MySeekBarDialog(Context context) {super(context,R.style.custom_dialog);final View view = getLayoutInflater().inflate(R.layout.dialog_seekbar, null);seekBar = (SeekBar) view.findViewById(R.id.SeekBar01);tView = (EditText)view.findViewById(R.id.textview);titleTxv = (TextView) view.findViewById(R.id.title); msgTxv = (TextView) view.findViewById(R.id.message); positiveTxv = (TextView) view.findViewById(R.id.positiveButton); negativeTxv = (TextView) view.findViewById(R.id.negativeButton); tView.addTextChangedListener(textWatcher);//设置文本编辑的实时监听setView(view);initColorBar();seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {@Overridepublic void onStopTrackingTouch(SeekBar arg0) {}@Overridepublic void onStartTrackingTouch(SeekBar arg0) {}@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {ColorPickGradient mColorPickGradient = new ColorPickGradient();float radio = (float)progress / seekBar.getMax(); //获取当前滑动位置mColor = mColorPickGradient.getColor(radio);//采集当前位置的颜色seekBar.getThumb().setColorFilter(mColor, Mode.SRC_ATOP); //设置thumb的颜色//seekBar.getProgressDrawable().setColorFilter(Color.RED, Mode.SRC_ATOP);// mtagName = tView.getText().toString();
// change.change(progress);
// tView.setText("���ȣ�" + progress + "%");}});}private void initColorBar() {// TODO Auto-generated method stub//设置SeekBar的颜色 ShapeDrawable.ShaderFactory shaderFactory = new ShapeDrawable.ShaderFactory() { @Override public Shader resize(int width, int height) { LinearGradient linearGradient = new LinearGradient(0, 0, width, height, ColorPickGradient.PICKCOLORBAR_COLORS, ColorPickGradient.PICKCOLORBAR_POSITIONS, Shader.TileMode.REPEAT); return linearGradient; } }; PaintDrawable paint = new PaintDrawable(); paint.setShape(new RectShape()); paint.setCornerRadius(10); paint.setShaderFactory(shaderFactory); seekBar.setProgressDrawable(paint); }@Override public void setTitle(CharSequence title) { titleTxv.setText(title); } @Override public void setTitle(int titleId) { setTitle(getContext().getString(titleId)); } /** * 设置提示内容文字 * @param msg */ public void setMessage(CharSequence msg){ msgTxv.setText(msg); } /** * 设置确定键文字 * @param text */ public void setPositiveText(CharSequence text){ positiveTxv.setText(text); } /** * 设置取消键文字 * @param text */ public void setNegativeText(CharSequence text){ negativeTxv.setText(text); } /** * 取消键监听器 * @param onClickListener */ public void setNegativeButton(CharSequence text,View.OnClickListener onClickListener){ negativeTxv.setText(text); negativeTxv.setOnClickListener(onClickListener); }/** * 确定键监听器 * @param*/ public void setPositiveButton(String text, View.OnClickListener onClickListener) {// TODO Auto-generated method stubpositiveTxv.setText(text);positiveTxv.setOnClickListener(onClickListener); }public void setEditContent(String string) {// TODO Auto-generated method stubif (string ==null)return;tView.setText(string);}public void setEdit(EditText et) {// TODO Auto-generated method stub}@Overridepublic void onPointerCaptureChanged(boolean hasCapture) {// TODO Auto-generated method stub}@Overridepublic void onProvideKeyboardShortcuts(List<KeyboardShortcutGroup> data, Menu menu, int deviceId) {// TODO Auto-generated method stub}private TextWatcher textWatcher = new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {// System.out.println("-1-onTextChanged-->"+ tView.getText().toString() + "<--");}@Overridepublic void afterTextChanged(Editable arg0) {// TODO Auto-generated method stubmtagName = tView.getText().toString();Log.v("mtagName", mtagName); }@Overridepublic void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {// TODO Auto-generated method stub}};@Overridepublic void onTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {// TODO Auto-generated method stub}@Overridepublic void afterTextChanged(Editable arg0) {// TODO Auto-generated method stub}@Overridepublic void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {// TODO Auto-generated method stub}
拾色器的封装接口:
public class ColorPickGradient { //设置的颜色 public static final int[] PICKCOLORBAR_COLORS = new int[]{0xFFFFFFFF,0xFFFF3030, 0xFFF4A460, 0xFFFFFF00, 0xFF66CD00, 0xFF458B00, 0xFF0000EE, 0xFF912CEE,0xFF000000}; //每个颜色的位置 public static final float[] PICKCOLORBAR_POSITIONS = new float[]{0f, 0.1f, 0.2f, 0.3f, 0.5f, 0.65f,0.8f,0.9f,1f}; private int[] mColorArr = PICKCOLORBAR_COLORS; private float[] mColorPosition = PICKCOLORBAR_POSITIONS; public ColorPickGradient(int[] colorArr) { this.mColorArr = colorArr; } public ColorPickGradient() { } /** * 获取某个百分比位置的颜色 * @param radio 取值[0,1] * @return */ public int getColor(float radio) { int startColor; int endColor; if (radio >= 1) { return mColorArr[mColorArr.length - 1]; } for (int i = 0; i < mColorPosition.length; i++) { if (radio <= mColorPosition[i]) { if (i == 0) { return mColorArr[0]; } startColor = mColorArr[i - 1]; endColor = mColorArr[i]; float areaRadio = getAreaRadio(radio,mColorPosition[i-1],mColorPosition[i]); return getColorFrom(startColor,endColor,areaRadio); } } return -1; } public float getAreaRadio(float radio, float startPosition, float endPosition) { return (radio - startPosition) / (endPosition - startPosition); } /** * 取两个颜色间的渐变区间 中的某一点的颜色 * @param startColor * @param endColor * @param radio * @return */ public int getColorFrom(int startColor, int endColor, float radio) { int redStart = Color.red(startColor); int blueStart = Color.blue(startColor); int greenStart = Color.green(startColor); int redEnd = Color.red(endColor); int blueEnd = Color.blue(endColor); int greenEnd = Color.green(endColor); int red = (int) (redStart + ((redEnd - redStart) * radio + 0.5)); int greed = (int) (greenStart + ((greenEnd - greenStart) * radio + 0.5)); int blue = (int) (blueStart + ((blueEnd - blueStart) * radio + 0.5)); return Color.argb(255, red, greed, blue); }
主要是知道怎么使用就行了。
本demo根据网络资源修改,侵删!!
demo 在如下的链接中,可以直接运行:
https://download.csdn.net/download/linzihahaha/10768993
Android 养成记-1 --1.3 标签拾色器相关推荐
- Android Studio设置颜色拾色器工具Color Picker
你可能下载过一些获取颜色值的一些小工具, 这种方式获取颜色,需要先切换窗口转跳到桌面,然后打开拾色器小工具程序,然后去拾取颜色: 你可能也知道Android Studio自带一个颜色拾色器,通过下面 ...
- Android Studio中如何设置颜色拾色器工具
Android Studio如何设置颜色拾色器工具Color Picker? 你可能下载过一些获取颜色值的一些小工具, 这种方式获取颜色,需要先切换窗口转跳到桌面,然后打开拾色器小工具程序,然后去拾取 ...
- 【Python百日基础系列】Day42 - Dash_DAQ 开关、拾色器、仪表盘、进度条
文章目录 一.Dash DAQ 安装 二.布尔开关 daq.BooleanSwitch() 2.1 默认开关 2.2 开关颜色 2.3 带标签的开关 2.4 垂直开关 2.5 禁止点击的开关 2.6 ...
- 安卓自定义时间选择器_微信小程序拾色器(颜色选择器)组件
点击上方"极客小寨",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 大家好,我是独立开发者东东,如今在web项目中不少地方需要用到颜色选择器,比如设置 ...
- UE4拾色器的实现,使用UE4自带的SColorPicker
我就奇怪了,csdn搞个资源这么难?链接: https://pan.baidu.com/s/1sn70iyT6mp89xmsgUVmDxg 提取码: 2yk2 这总有了吧(2020年7月3日22:14 ...
- 一款免安装、多平台兼容的 拾色器(Color Picker)
文章目录 视频教程 场景需求 场景 需求 Chrome Google DevTools 中的 拾色器 用法 其他浏览器 视频教程 浏览器自带的拾色器ColorPicker使用 场景需求 场景 我是一个 ...
- PS学习笔记——拾色器和色彩空间
作为绘图.修改.色彩调整的基础,拾色器是一个非常重要的工具.如果颜色不存在于画面上或图像内,而是需要人为设定,就需要使用拾色器. 位于工具面板下方,可以看到前景色/背景色选项.或者可以打开色板面板和颜 ...
- 拾色器 插件 Farbtastic
基本用法 1.引入 farbtastic.js 和 farbtastic.css(注:基于jquery的,先把jquery引进去,css包含三张图别忘了设置正确路径,不然只能看到一个方块) <s ...
- vue吸管拾色器、利用canvas获取坐标点颜色、canvas获取坐标点颜色图片跨域、图片转base64、colorPicker
vue吸管拾色器.利用canvas获取坐标点颜色.canvas获取坐标点颜色图片跨域.图片转base64.colorPicker 1.需求:表格中主颜色和次颜色是需要从缩略图上吸取颜色,然后渲染色块, ...
最新文章
- 网络编程试卷选择解析
- D3引擎用正则运算的方式,实现智能设备APP消息推送
- linux ssh无需密码,linux下 ssh 实现无需密码的远程登陆
- [Voice communications] 音量的控制
- 干货!一文讲清楚电商商品生产和库存的数据分析
- 自己写个简易版 PicGo
- python自学行吗-没有编程基础,可以自学Python吗?
- android jni 多线程,[Android]JNI进阶--线程池
- 2020 金山云 面经
- 巧记肖特基二极管BAT54C、BAT54S、BAT54A
- 有道云笔记 markdown html,有道云笔记Markdown之甘特图
- 智课雅思词汇---六、fer是什么意思
- 科技爱好者周刊(第 194 期):悲观者正确,乐观者成功
- 银行卡系统(面向对象进阶习题)
- 科研linux发型版本,[合集]哪些Linux系统科研能用呢 - 优秀的Free OS(Linux)版 - 北大未名BBS...
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxcccccccccccc
- YOLO 模型的评估指标——IOU、Precision、Recall、F1-score、mAP
- 抖音关键词排名怎么靠前,抖音关键词怎么优化?
- 湖仓一体化:铁打的数据仓 流水的数据湖产品
- MySQL 内置的监控工具介绍及使用篇