安卓属性动画与自定义控件实现圆球移动并实现颜色渐变
2017-09-14 16:57
344 查看
本人也是刚开始研究属性动画,一些知识点也不是太懂,如果下面有说错的地方,大神们给一些指正的评论。
今天做了一个demo,就是属性动画和自定义控件小圆球从左上角移动到右下角,并且伴随着颜色渐变。效果基本如下:
![](https://img-blog.csdn.net/20170914163457829?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWW91QXJlVGhlT25seU9uZUNK/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
好了,下面说一下我的思路:
属性动画可以分为两种,这一种是用valueAnimator.ofObject方式做到的,这种方式需要自己定义模式,
我首先定义了两个类,一个为原点类,一个为颜色类,就是下面这样:
![](https://img-blog.csdn.net/20170914170755490?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWW91QXJlVGhlT25seU9uZUNK/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后在自己定义的模式里面计算开始到结束,原点和颜色的差值,并且返回这两个类的实例
![](https://img-blog.csdn.net/20170914170904455?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWW91QXJlVGhlT25seU9uZUNK/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170914170916667?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWW91QXJlVGhlT25seU9uZUNK/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在自己定义的颜色模式中,用到一个新的API,这个方法的大意就是:自己定义颜色的argb,最后再转成int类型的color,然而这两个自己定义的模式,里面的一个算法,我给你们写成公式:值=开始值+分段*(结束值-开始值)
我这里面没有导源码,所以你们或许不懂这三个参数v,o,t1,这三个参数分别是:v=fraction,o=startValue
t1=endValue.
当计算好自己定义的模式之后,然后开始设计动画的效果
![](https://img-blog.csdn.net/20170914170932830?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWW91QXJlVGhlT25seU9uZUNK/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
设置动画效果的代码可以自己封装到一个方法中比如:startAnim(),设置完动画效果之后之后就是去绘制控件的ondraw方法了,相信写到这,大家大概能明白一些,自己定义的实体类
,在重写模式的方法中不断被实例不断作为返回值被返回,就是为了在ondraw方法中调用,然后确定控件的位置和颜色:
![](https://img-blog.csdn.net/20170914170943491?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWW91QXJlVGhlT25seU9uZUNK/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
还有一些定义的全局变量也给大家展示一下吧:
做到这里,这个demo基本就做完了,只需要在布局里面调用者个自定义控件,便会实现文章开头的效果了,快去试一下吧。
今天做了一个demo,就是属性动画和自定义控件小圆球从左上角移动到右下角,并且伴随着颜色渐变。效果基本如下:
好了,下面说一下我的思路:
属性动画可以分为两种,这一种是用valueAnimator.ofObject方式做到的,这种方式需要自己定义模式,
我首先定义了两个类,一个为原点类,一个为颜色类,就是下面这样:
然后在自己定义的模式里面计算开始到结束,原点和颜色的差值,并且返回这两个类的实例
在自己定义的颜色模式中,用到一个新的API,这个方法的大意就是:自己定义颜色的argb,最后再转成int类型的color,然而这两个自己定义的模式,里面的一个算法,我给你们写成公式:值=开始值+分段*(结束值-开始值)
我这里面没有导源码,所以你们或许不懂这三个参数v,o,t1,这三个参数分别是:v=fraction,o=startValue
t1=endValue.
当计算好自己定义的模式之后,然后开始设计动画的效果
设置动画效果的代码可以自己封装到一个方法中比如:startAnim(),设置完动画效果之后之后就是去绘制控件的ondraw方法了,相信写到这,大家大概能明白一些,自己定义的实体类
,在重写模式的方法中不断被实例不断作为返回值被返回,就是为了在ondraw方法中调用,然后确定控件的位置和颜色:
还有一些定义的全局变量也给大家展示一下吧:
private Paint paint; public static final float RADIUS = 50f; private Point currentPoint; private circleColor currentColor;
做到这里,这个demo基本就做完了,只需要在布局里面调用者个自定义控件,便会实现文章开头的效果了,快去试一下吧。
相关文章推荐
- 绘图与动画之使用自定义属性与颜色渐变实现色带加载动画
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- 中文前端UI框架Kit(五)支持Css全属性/Css Hack/Css3属性/颜色渐变的Javascript动画,相比JQuery和Mooltools,功能更为强大,这不是标题党!
- Android基础-简单的动画实现 *补间动画 *透明度渐变 *旋转动画 *位移动画 *如果需要几个效果整合到一起,需要将所有效果全部放到set里
- 实现Tumblr的标题栏跟滑动渐变颜色(在2个色值之间)的动画
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- 安卓中自定义view控件代替radiogroup实现颜色渐变效果的写法
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- Android 实现属性动画平移,旋转,缩放,渐变 《H》
- MFC在鼠标自定义的一定的范围内实现拖动窗口移动、错误:不支持尝试执行的操作、实现进度条颜色的渐变或者背景和前景色的改变
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- Android 移动跟渐变动画代码实现(AnimationUtils)
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- 属性动画实现控件类似贝塞尔曲线轨迹移动效果
- 实现控件移动(二)--使用属性动画
- js实现按钮颜色渐变动画效果
- 使用自定义+属性动画实现小圆球抛物线的效果