Android颜色编辑器的制作中遇到的问题分析

Android没有自带颜色编辑器,为了让用户直观的选择颜色,做了这么一个控件,效果图如下:

上方颜色条为主颜色条,用户可以选择大致需要的颜色,下方是该颜色的平衡调节,可以调节明亮度。

背景颜色实现起来很容易,用GradientDrawable在主色之间分段渐变即可,上方的背景色是永远不变的。下方平衡调节只要在白色、选定色和黑色之间渐变即可,下方的颜色随着上方的颜色变化而变化。

颜色条自身控件由于需要拖动,直接集成Android自带的SeekBar就能实现,只需替换默认的ProgressDrawable即可。

唯一遇到的一个奇怪问题是:

我为下方的颜色调提供了一个颜色数组:

代码如下:

private int[] colorArr;

里面存放:白色、上方选定色和黑色
当上方选定色更改后,我改变colorArr数组中的第二个颜色,即选定色,并调用控件的invalidate方法,奇怪的是控件并没有改变颜色,还是原来的颜色。

此时,如果拖动下方的滚动条,哪怕只拖动1%,也能改变成正确的颜色。
我就猜测:Android的SeekBar在进度没有改变的时候,是不会重绘它的进度背景色的。
于是使用以下技巧,人为的改变到某个进度,再改回来,这样就能重绘它的进度背景色了:

代码如下:

/**
* 设置颜色平衡的中间色
* @param color
*/
public void SetBalenceColor(int color)
{
this.color = color;
SetBackground();//重新设置ProgressDrawable中的中间色
//this.invalidate();
int max = this.getMax();
int currentProgress = this.getProgress(); //备份进度
this.setProgress(max - currentProgress);//修改到其他某个进度
this.setProgress(currentProgress);//还原进度
}

(0)

相关推荐

  • Android中vim编辑器进阶的使用介绍

    1. 移动指令    (1). h j k l, 方向键,记忆技巧:左右方向的是最左边和最右边的,j向下打了个勾,所以是向下键,剩下的k就是向上的键了.    (2). b, before,上一个单词(词首)           w, word,下一个单词(词首)           e,  end,下一个单词(词尾)    注意这些小写的命令由字母,点,数字,下划线划分,还有这三个对应的大写字母的命令,B,W,E,类似的意思,但是是以空格区分移动的.总而言之,大写的移动范围要大.    (3)

  • 9个非常棒的Android代码编辑器 移动开发者的最爱

    在网络信息高速发展的今天,移动设备的方便快捷已经深入人心,越来越多的开发人员会选择在移动设备上查看或编辑源代码.于是,Android平台上大量基于代码编程的应用应运而生,谷歌应用商店里的代码编辑器.编译器和开发环境比比皆是.由于不同工具的特性和缺点不尽相同,因此如何选择一款最适合自己的开发工具便成了一件头疼的事情.在这里,我们针对移动开发人员列出了9个非常有用的Android代码编辑器. TOP1:Code Peeker Code Peeker可以让语法高亮显示并允许你查找代码片段,且被Goog

  • Android中EditText实现不可编辑解决办法

    android:editable is deprecated: Use an <EditText> to make it editable android:editable is deprecated: Use inputType instead 分析:关于EditText控件的read-only问题,即: 无法通过UI更改其中的内容, 但可以选定部分内容, 进行复制.在早期的sdk, EditText有Editable属性, 现在这个属性已经deprecated了.   解决方法: 其实只需

  • Android颜色编辑器的制作中遇到的问题分析

    Android没有自带颜色编辑器,为了让用户直观的选择颜色,做了这么一个控件,效果图如下: 上方颜色条为主颜色条,用户可以选择大致需要的颜色,下方是该颜色的平衡调节,可以调节明亮度. 背景颜色实现起来很容易,用GradientDrawable在主色之间分段渐变即可,上方的背景色是永远不变的.下方平衡调节只要在白色.选定色和黑色之间渐变即可,下方的颜色随着上方的颜色变化而变化. 颜色条自身控件由于需要拖动,直接集成Android自带的SeekBar就能实现,只需替换默认的ProgressDrawa

  • TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析

    本文实例讲述了TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法.分享给大家供大家参考,具体如下: 最近项目里要添加编辑器,以为CKeditor比较出名,所以研究了一下... 1.下载编辑器什么的不用说了 2.修改config配置文件 config.image_previewText=' '; config.filebrowserImageUploadUrl = 'uploadFiles'; 添加这两行代码,上面的是去除预览中的一堆没有用的东西,下面的是上传文件的方法名, 注意:

  • Android使用selector修改TextView中字体颜色和背景色的方法

    本文实例讲述了Android使用selector修改TextView中字体颜色和背景色的方法.分享给大家供大家参考,具体如下: android中的selector大家都很熟悉了,用它可以很方便的实现,控件在不同的动作中,颜色等值的变化.这里我说一下TextView中的一些应用. 我想大家都知道,Button按钮在源码上看是一种特殊的TextView,所以我们很多时候,按钮全是使用的TextView来完成,只要加一个android:clickable="true"就可以了. TextVi

  • Android以对话框形式制作数字软键盘示例

    目录 一.介绍 二.布局编写 三.逻辑编写 一.介绍 Android的大部分自定义软键盘主要是通过android自带控件KeyboardView实现的. 那么,有没有其他简单易上手的方法来制作一个软键盘呢? 当当当当!!! 这里就要说到对话框形式的软键盘啦,简单方便易理解! 下面,通过自定义的数字软键盘来介绍如何利用对话框实现自定义软键盘! 先看看效果! 二.布局编写 我们先来看看布局! 首先是activity_main的实现: 在这里,主界面布局非常简单,仅需要两个TextView文本框就可以

  • Android音乐播放器制作 加入控制台(三)

    Android音乐播放器的运行效果 这篇博客还是接着上一篇Android音乐播放器制作写的,没看过的可以去看看. 其中这个效果(圆形ImageView和控件匀速旋转): 我前面的博客中写到过我就不一一细说了: 图片变成圆形:android图片处理,让图片变成圆形 旋转:android图片处理:让图片一直匀速旋转 文字跑马灯:TextView的跑马灯效果以及TextView的一些属性 具体实现 首先是布局文件中添加了如下代码,这些代码就是实现控制台的,给整体设置了一个invisible,为了让他点

  • Android音乐播放器制作 点击歌曲实现播放(二)

    上次我们实现了把手机里的音频扫描到,然后放在list集合里面,用ListView展示在手机界面上,如果没有看过的可以去看看本人的博客:Android音乐播放器制作(一)扫描本地音乐显示在手机上 这次是在上一次的基础上直接继续写代码,几行代码实现点击那首歌曲就播放那首歌曲,系统已经提供了播放音频的对象了,直接用就可以了,具体如下: 1.声明一个MediaPlayer private MediaPlayer mediaPlayer;//播放音频的 2.实例化 //初始化 mediaPlayer =

  • Android 颜色大全color.xml文件使用方法

    使用方法: 将color.xml文件拷到res/values目录下后我们只需要R.xml文件名称.name名称就可以调用了(例如:R.color.red) <?xml version="1.0" encoding="utf-8"?> <resources> <color name="white">#FFFFFF</color> <!-- 白色 --> <color name=&qu

  • Android颜色配置器配置方法

    一.Android Color设置 1.在xml文件中 想设置颜色直接设置background的属性或者其他的color属性.随便设置一个颜色如#000,再点击左边的颜色方块,弹出颜色选择器选择颜色 2.在java代码中 ①Color.parseColor("#000"); tvShow.setBackgroundColor(Color.parseColor("#000")); [提示]可以在布局文件中配置好颜色值,然后把用"#"表示的颜色带到j

  • Android Studio 利用Splash制作APP启动界面的方法

    最近又开始学习Android studio 了,在制作APP时,都有一个启动的界面,看上去美观且实用(也可以作为以后的广告位← 那怎样制作呢? 第一步:新建Splash 如图,新建一个Empty Activity. 然后将名字改为SplashActivity. 第二步:SplashActivity的内容 如图: 方便起见,我把代码贴出来,代码如下: public class SplashActivity extends Activity { // private final int SPLASH

随机推荐