美文网首页
Android中的动画

Android中的动画

作者: 还是个初学者 | 来源:发表于2018-10-16 10:10 被阅读0次

https://developer.android.google.cn/training/animation/
HenCoder Android 自定义 View 1-6:属性动画 Property Animation(上手篇)
Android 动画总结 - 简书

动画的分类

  • Animation
    • View Animation

      • Frame 帧动画。一张张单独的图片连贯的进行播放
      • Tween 补间动画。通过指定View的初末状态和变化方式,对View的内容完成一系列的图形变换来实现动画效果
        • TranslateAnimation 位移
        • ScaleAnimation 大小
        • RotateAnimation 选择
        • AlphaAnimation 透明度
    • Property Animation 属性动画,3.0引入,核心思想是对值的变化。

      • ViewPropertyAnimation
      • ObjectAnimation
  • Transition 切换界面时的动画效果

Frame Animation帧动画

Animation Drawable控制animation-list.xml布局,把一幅幅的图片按顺序显示,造成动画的视觉效果。

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/a_0"
        android:duration="100" />
    <item
        android:drawable="@drawable/a_1"
        android:duration="100" />
    <item
        android:drawable="@drawable/a_2"
        android:duration="100" />
</animation-list>
ImageView animationImg1 = (ImageView) findViewById(R.id.animation1);
animationImg1.setImageResource(R.drawable.frame_anim1);
AnimationDrawable animationDrawable1 = (AnimationDrawable)animationImg1.getDrawable();
animationDrawable1.start();

ViewPropertyAnimator

使用方法:
View.animate() 后跟 translationX() 等方法,动画会自动执行。
设置监听器:
ViewPropertyAnimator.setListener()
ViewPropertyAnimator.setUpdateListener()
withStartAction()//一次性
withEndAction()//只有在动画正常结束时才会被调用
移除监听器:
setListener(null)

gridView.animate().translationX(50).setListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animation) {
                 当动画开始执行时
            }
            @Override
            public void onAnimationEnd(Animator animation) {
                    当动画结束时
            }
            @Override
            public void onAnimationCancel(Animator animation) {
                    当动画被通过 cancel()方法取消时(之后onAnimationEnd() 也会被调用)
            }
            @Override
            public void onAnimationRepeat(Animator animation) {
                    当动画通过 setRepeatMode() / setRepeatCount() 或 repeat() 方法重复执行时,                    这个方法被调用。由于 ViewPropertyAnimator 不支持重复,所以这个方法对                               ViewPropertyAnimator 相当于无效。
            }
        }).setUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                 当动画的属性更新时
            }
        })

ObjectAnimator

使用方式:
如果是自定义控件,需要添加 setter / getter 方法;
用 ObjectAnimator.ofXXX() 创建 ObjectAnimator 对象;
用 start() 方法执行动画。
设置监听器:
ObjectAnimator.addListener()
addPauseListener()
移除监听器:
removeListener();
removePauseListener()

相关文章

网友评论

      本文标题:Android中的动画

      本文链接:https://www.haomeiwen.com/subject/kgvczftx.html