欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

安卓学习笔记之动画属性

程序员文章站 2022-05-05 14:22:50
...

ObjectAnimator

这是安卓中做动画效果比较常用的类他继承ValueAnimator类。
1 .如果我们想实现让控件变透明再变回来的效果我们的代码可以这样写:

ObjectAnimator animator = ObjectAnimator.ofFloat(控件类型, "alpha", 1f, 0f, 1f);
animator.setDuration(5000);
animator.start();

其中alpha表示透明属性后面三个属性是从有到无再到有从而达到动画的效果。
2 .同理如果想让控件实现旋转的效果的话代码可以这样写

ObjectAnimator animator = ObjectAnimator.ofFloat(控件类型, "rotation", 0f, 360f);
animator.setDuration(5000);
animator.start();

其中rotation表示旋转的属性后面则表示旋转的角度。
3.如果想要将控件先向左移出屏幕,然后再移动回来,就可以这样写:

float curTranslationX = 控件类型.getTranslationX();
ObjectAnimator animator = ObjectAnimator.ofFloat(控件类型, "translationX", curTranslationX, -500f, curTranslationX);
animator.setDuration(5000);
animator.start();

4.如果想实现放大的效果可以这样写;


ObjectAnimator animator = ObjectAnimator.ofFloat(控件类型, "scaleY", 1f, 3f, 1f);
animator.setDuration(5000);
animator.start();

其中属性为scaleY后面数字表示从本身放大三倍再恢复本身。
这些动画属性值都是自定义的。关键是后面传入的属性值。通过传入的值来给某个控件做对应的变化效果。
5.如果想做一套整合的动画效果代码可以这样写

ObjectAnimator moveIn = ObjectAnimator.ofFloat(控件类型, "translationX", -500f, 0f);
ObjectAnimator rotate = ObjectAnimator.ofFloat(控件类型, "rotation", 0f, 360f);
ObjectAnimator fadeInOut = ObjectAnimator.ofFloat(控件类型, "alpha", 1f, 0f, 1f);
AnimatorSet animSet = new AnimatorSet();
animSet.play(rotate).with(fadeInOut).after(moveIn);
animSet.setDuration(5000);
animSet.start();

实现组合动画功能主要需要借助AnimatorSet这个类。该类下面有四个方法
after(Animator anim) 将现有动画插入到传入的动画之后执行
after(long delay) 将现有动画延迟指定毫秒后执行
before(Animator anim) 将现有动画插入到传入的动画之前执行
with(Animator anim) 将现有动画和传入的动画同时执行
animSet.play(rotate).with(fadeInOut).after(moveIn);这句代码的意思就是让旋转和透明度再平移之后发生。

对动画监听

我们希望可以监听到动画的各种事件,比如动画何时开始,何时结束,然后在开始或者结束的时候去执行一些逻辑处理。这个功能是完全可以实现的,Animator类当中提供了一个addListener()方法,这个方法接收一个AnimatorListener,我们只需要去实现这个AnimatorListener就可以监听动画的各种事件了。
代码如下:
anim.addListener(new AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}

@Override
public void onAnimationRepeat(Animator animation) {
}

@Override
public void onAnimationEnd(Animator animation) {
}

@Override
public void onAnimationCancel(Animator animation) {
}

})

相关标签: 安卓动画笔记