码迷,mamicode.com
首页 > 移动开发 > 详细

安卓动画两种基本实现方式

时间:2017-03-05 20:40:09      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:new   自己   代码   http   也有   xmlns   anim   bounce   cycle   

1.代码实现混合动画的方式,这里用到了AnimationSet这个Animation的子类来实现,从底层看该类实现了Animation的大多数方法,构造函数也有好几个。

AnimationSet animationSet = new AnimationSet(true);//这里的ture表示所有的动画都使用同一变速器,也就是在布局文件中的set里设置shareInterpolator="true"

AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);//透明度动画从1到0

RotateAnimation rotateAnimation = new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);//旋转动画相对于自己的中心位置,旋转角度从0到360

TranslateAnimation translateAnimation = new TranslateAnimation(0, 100, 0, 100);//位移动画相对于控件当前的位置,x坐标从0到100,y坐标也是从0到100

ScaleAnimation scaleAnimation=new ScaleAnimation(0.0f,1.5f,0.0f,1.5f,
0.5f,0.5f);    //缩放动画相对于中心位置进行扩大
animationSet.setDuration(3000);  //设置动画持续时间
animationSet.addAnimation(alphaAnimation);  //添加到动画容器中去
animationSet.addAnimation(rotateAnimation);
animationSet.addAnimation(translateAnimation);
animationSet.addAnimation(scaleAnimation);
image.startAnimation(animationSet);  //控件开始播放动画

2.xml文件实现
在activity中的代码如下:
Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.set_animation);  //使用AnimationUtils加载布局文件
image.startAnimation(animation);  //开始播放动画

在布局文件中的实现:(每种动画都伴随着相应的参数信息,只要按照相应的操作就行了)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:shareInterpolator="true"
android:duration="3000">

<scale
android:fromXScale="0.0"
android:fromYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.5"
android:toYScale="1.5" />
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />
<alpha
android:fromAlpha="0"
android:toAlpha="1" />
<translate
android:fromXDelta="0"
android:toXDelta="100"
android:fromYDelta="0"
android:toYDelta="100"
/>
</set>

这里变速器interpolator默认是accelorateDecelorateInterpolator的类型,如果要设置不同的变速器类型,google公司提供了几种类型:

AccelerateInterpolator:先加速后匀速

AnticipateInterpolator:先慢慢减速后加速

AnticipateOvershootInterpolator:变化多样的变速器

BounceInterpolator:有弹起效果的变速器

CycleInterpolator:具有周期性的变速器

DecelerateInterpolator:减速型的变速器

LinearInterpolator:匀速型的变速器

 个人源码地址:https://github.com/ailibin/MyAnimation.git

 

安卓动画两种基本实现方式

标签:new   自己   代码   http   也有   xmlns   anim   bounce   cycle   

原文地址:http://www.cnblogs.com/ailibin/p/blog_ailibin.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!