ValueAnimator属性动画
来源:互联网 发布:java个人信息管理系统 编辑:程序博客网 时间:2024/05/16 10:06
1 官方文档
This class provides a simple timing engine(计时器) for running animations which calculate animated values and set them on target objects.There is a single timing pulse that all animations use. It runs in a custom handler to ensure that property changes happen on the UI thread.By default, ValueAnimator uses non-linear time interpolation, via the AccelerateDecelerateInterpolator class, which accelerates into and decelerates out of an animation. This behavior can be changed by calling setInterpolator(TimeInterpolator).(这段话是说动画默认是非匀速的,可以加速播放动画也可以减速播放,需要使用setInterpolator方法)
2 使用方法
final ValueAnimator animator = ValueAnimator.ofInt(0, 50); animator.setDuration(2000); animator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { //动画播放结束执行的操作 } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { Integer value = (Integer) animation.getAnimatedValue(); int top = value * 10; int bottom = top + textView.getHeight(); //不停重新布局视图位置 setLayout(getRecyclerViewRect(top,bottom)); } }); animator.start();
3 效果展示
4 完整代码
package com.demo1;import android.animation.Animator;import android.animation.ValueAnimator;import android.graphics.Rect;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_click; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_click = (Button) findViewById(R.id.tv); btn_click.setOnClickListener(this); textView = (TextView) findViewById(R.id.tvext); textView.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.tv: startAnimator(); break; } } private void startAnimator() { final ValueAnimator animator = ValueAnimator.ofInt(0, 50); animator.setDuration(2000); animator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { Integer value = (Integer) animation.getAnimatedValue(); int top = value * 10; int bottom = top + textView.getHeight(); //重新布局视图位置 setLayout(getRecyclerViewRect(top,bottom)); } }); animator.start(); } public void setLayout (Rect rect) { textView.layout(rect.left, rect.top, rect.right, rect.bottom); textView.invalidate(); } public Rect getRecyclerViewRect (int top, int bottom) { return new Rect(textView.getLeft(), top, textView.getRight(), bottom); }}
阅读全文
0 0
- android 属性动画(ValueAnimator)
- 属性动画之ValueAnimator
- 属性动画之ValueAnimator
- 属性动画二--ValueAnimator
- ValueAnimator属性动画
- Android属性动画 ValueAnimator
- android 动画 属性动画 ValueAnimator
- 属性动画ValueAnimator和ObjectAnimator
- Android属性动画之ValueAnimator
- 属性动画基础之ValueAnimator
- ValueAnimator属性动画学习笔记
- 属性动画ValueAnimator源码解析
- Android属性动画之ValueAnimator
- 属性动画之☞valueanimator
- Android 动画之属性动画ValueAnimator
- Android 2.x自定义属性动画ValueAnimator
- Android属性动画完全解析 ValueAnimator
- Android-Animator属性动画( ObjectAnimator , AnimatorSet , ValueAnimator )
- WUST 1927 信使(最短路之弗洛伊德算法)
- 关于Tomcat部署项目时部署两次问题的解决方案
- POJ 2135 Farm Tour(最小费用最大流模板题)
- Golang教程:(十八)接口
- 【Git】学习笔记之基本操作
- ValueAnimator属性动画
- 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言?
- 18
- 1
- 快速排序
- 秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial
- 【软件安全】cwe-89 SQL Injection(二)
- jquery 插件开发/插件编写$.fn.extend(),$.extend()
- @Embedded和@Embeddable