安卓自定义View之添加动画

1. 如何为自定义View添加动画效果

public void startAnimation() {
    ValueAnimator anim = ValueAnimator.ofFloat(minValue, midValue, maxValue);
    anim.setRepeatCount(ValueAnimator.INFINITE);//设置无限重复
    anim.setRepeatMode(ValueAnimator.RESTART);//设置重复模式
    anim.setDuration(1000);
    anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            value = (Float) animation.getAnimatedValue();
            postInvalidate();
        }
    });
    anim.start();
}

即利用ValueAnimator,在动画的duration期间,产生一系列的value值,然后不断刷新来触发View的重绘,重绘过程中用到了这些value值,从而达到了动画效果

2.颜色渐变

int startColor = 0x33FFFFFF;
int endColor = 0xE6FF5800;
GradientDrawable gradient = (GradientDrawable) mButtonLayout.getBackground();
ValueAnimator colorAnim = ValueAnimator.ofObject(new ArgbEvaluator(), startColor, endColor);
// ValueAnimator colorAnim = ValueAnimator.ofArgb(startColor, endColor);
colorAnim.setDuration(3000);
colorAnim.start();
colorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
  @Override
  public void onAnimationUpdate(ValueAnimator animation) {
    int color = (int) animation.getAnimatedValue();
    gradient.setColor(color);
  }
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 背景 不能只分析源码呀,分析的同时也要整理归纳基础知识,刚好有人微博私信让全面说说Android的动画,所以今...
    未聞椛洺阅读 2,740评论 0 10
  • 【Android 动画】 动画分类补间动画(Tween动画)帧动画(Frame 动画)属性动画(Property ...
    Rtia阅读 6,213评论 1 38
  • 本笔记的原文本链接 Property Animation Overview 属性动画总览 The property...
    Jaesoon阅读 1,141评论 2 3
  • 因为个头原因,从小与篮球留下不解之缘,打酱油真的是从娃娃抓起,就这样一直跑场跑到了大学。队友换了无数,我,依旧是那...
    61C阅读 158评论 0 0
  • 学校和家庭二者必须同向、同步形成教育合力,才能有效地促进孩子的发展。相互的沟通交流、支持合作、资源共享才...
    流浪贝贝阅读 4,008评论 0 3