android 属性动画
2015-06-28 16:33
465 查看
package com.example.objectanimator; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.animation.ValueAnimator.AnimatorUpdateListener; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.AccelerateInterpolator; import android.view.animation.LinearInterpolator; import android.widget.Button; import android.widget.TextView; /*********************************** * android 属性动画是在android 3.0出现的, * * 要想向低版本兼容可以使用开源框架nieoldandroid动画 * * * **********************************/ public class MainActivity extends Activity { TextView textview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textview = (TextView) this.findViewById(R.id.textview); Button button = (Button) this.findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //textviewAnimation(textview); //valueAnimatorTest(); //animationSet(textview); viewPropertyAnimatorTest(textview); } }); } private void textviewAnimation(TextView textview){ float startx = textview.getTranslationX(); ObjectAnimator animator = ObjectAnimator.ofFloat(textview, "translationX", startx,-500f,startx); animator.setRepeatCount(100); //animator.setRepeatMode(RE); animator.setInterpolator(new LinearInterpolator());//线性运行 animator.setDuration(1000); animator.start(); } private void valueAnimatorTest(){ ValueAnimator valueAnimator = ValueAnimator.ofFloat(0,94,9,58);//值的改变从0-94-9-58依次改变 valueAnimator.setDuration(1000); //监听值的变化(哈哈) valueAnimator.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator anim) { float value = (float) anim.getAnimatedValue(); Log.e("current value is ", value+""); } }); valueAnimator.start(); } //集合动画 private void animationSet(TextView textview){ float transx = (float) textview.getTranslationX(); //动画集合对象 AnimatorSet animatorSet = new AnimatorSet(); //动画监听 animatorSet.addListener(new AnimatorListenerAdapter(){ @Override public void onAnimationEnd(Animator animation) { Log.i("----------AnimatorSet anim is finish-------------", "aa"); } }); ObjectAnimator transAnim = ObjectAnimator.ofFloat(textview, "translationX", transx,-500f,transx);//平移 ObjectAnimator alphaAnim = ObjectAnimator.ofFloat(textview, "alpha", 1f,0f,1f);//像素 ObjectAnimator rotateAnim = ObjectAnimator.ofFloat(textview, "rotation", 0f,360f);//旋转 animatorSet.play(rotateAnim).with(transAnim).after(alphaAnim);//先变化像素,再同时旋转动画和平移动画 animatorSet.setDuration(2000); animatorSet.setInterpolator(new AccelerateInterpolator());//加速 animatorSet.start(); } //ViewPropertyAnimator 让动画变得更加简单(此属性是在android 3.1出现的) private void viewPropertyAnimatorTest(TextView textview){ //textview.animate().alpha(0f).setDuration(2000);//将textview由不透明变为透明,动画时长为2秒 textview.animate().alpha(0f).x(500f).y(500f).setDuration(2000);//将textview由不透明变为透明,动画时长为2秒 } }
相关文章推荐
- Android 异常分类及处理
- android中的数据交换格式之JSON
- android handler机制的简要分析
- (原创)《Android编程权威指南》学习笔记01-- Android应用初体验--007
- android handler创建的简单原理
- Android在API推荐的方式来实现SQLite数据库的增长、删除、变化、检查操作
- (原创)《Android编程权威指南》学习笔记01-- Android应用初体验--006
- Android SwipeRefreshLayout 官方下拉刷新控件介绍—Handler原理—Adapter总结
- android 深入研究ratingbar自定义
- Android Volley完全解析(四),带你从源码的角度理解Volley
- Android Rom分区 与 SD卡读写
- Mac下Android Studio subversion 集成的问题
- (原创)《Android编程权威指南》学习笔记01-- Android应用初体验--005
- Android 动画具体解释View动画
- Android(Lollipop/5.0) Material Design(六) 自定义动画
- <只看这个就够了。。。>Android自动化测试及性能优化
- Android中把时间戳转化为对应的时长
- Android 数据抓取——在线音乐播放器的实现
- android单元测试 activity跳转 以及 input 输入后 测试
- Mac OS 10.10.3 下 AndroidStudio单元测试