android scaleanimation动画,Android 动画Animation简单总结

最近看到了一些关于Animation的内容,总结一下留待后用;

视图动画

我们在APP中看到的动画一般都是视图动画,那就先来总结一下视图动画;一般我们使用到的视图动画包括透明动画(AlphaAnimation)、旋转动画(RotateAnimation)、移动动画(TranslateAnimation)和缩放动画(ScaleAnimation)。我们先来看看运行效果图,然后再来呈现代码。

ff634a3ce107

视图动画.gif

不多说了直接上代码

透明动画(AlphaAnimation)

纯java实现:

只需要在对应的button点击事件中添加AlphaAnimation即可:

findViewById(R.id.btn_alpha).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);//透明度从0~1

alphaAnimation.setDuration(1000);//持续时间

v.startAnimation(alphaAnimation);

}

});

java和xml结合条件下:

在res/anim下创建alpha.xml如下:

android:duration="1000"

android:fromAlpha="0"

android:toAlpha="1">

在java代码点击事件中添加上:

v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.alpha));

剩下的3个动画也和上面的方法类似,下面就简单的介绍一下

旋转动画(RotateAnimation)

纯java实现:

只需要在对应的button点击事件中添加RotateAnimation即可:

RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

//上述参数解释分别为:旋转起始角度,旋转结束角度,相对与自身,x轴方向的一半,相对于自身,y轴方向的一半

rotateAnimation.setDuration(1000);

v.startAnimation(rotateAnimation);

java和xml结合条件下:

在res/anim下创建rotate.xml如下:

android:duration="1000"

android:fromDegrees="0"

android:pivotX="50%"

android:pivotY="50%"

android:toDegrees="360">

在java代码点击事件中添加上:

v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate));

移动动画(TranslateAnimation)

纯java实现:

TranslateAnimation translateAnimation = new TranslateAnimation(0,80,0,80);

//起始x轴,最终x轴,起始y轴,最终y轴

translateAnimation.setDuration(1000);

v.startAnimation(translateAnimation);

java和xml结合条件下:

在res/anim下创建translate.xml如下:

android:duration="1000"

android:fromXDelta="0"

android:fromYDelta="0"

android:toXDelta="80"

android:toYDelta="80">

在java代码点击事件中添加上:

v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.translate));

缩放动画(ScaleAnimation)

纯java实现:

ScaleAnimation scaleAnimation = new ScaleAnimation(0,1,0,1);//x轴0倍,x轴1倍,y轴0倍,y轴1倍

scaleAnimation.setDuration(1000);

v.startAnimation(scaleAnimation);

java和xml结合条件下:

在res/anim下创建scale.xml如下:

android:duration="1000"

android:fromXScale="0"

android:fromYScale="0"

android:toXScale="1"

android:toYScale="1">

在java代码点击事件中添加上:

v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.scale ));

混合动画

纯java实现:

AnimationSet animationSet = new AnimationSet(true);//共用动画补间

animationSet.setDuration(1000);

AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);

alphaAnimation.setDuration(1000);

animationSet.addAnimation(alphaAnimation);

TranslateAnimation translateAnimation = new TranslateAnimation(0, 80, 0, 80);

translateAnimation.setDuration(1000);

animationSet.addAnimation(translateAnimation);

v.startAnimation(animationSet);

java和xml结合条件下:

在res/anim下创建blend_set.xml如下:

android:duration="1000"

android:shareInterpolator="true">

android:duration="1000"

android:fromAlpha="0"

android:toAlpha="1">

android:duration="1000"

android:fromXDelta="0"

android:fromYDelta="0"

android:toXDelta="80"

android:toYDelta="80">

在java代码点击事件中添加上:

v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.blend_set));

布局动画

先看效果图:

ff634a3ce107

布局动画.gif

根据示意图我们发现button按钮出现的时间是不一样的,这就是对整个页面布局添加了动画之后的效果;我们来看一下如何实现的:

RelativeLayout activity_main = (RelativeLayout) findViewById(R.id.activity_main);

ScaleAnimation scaleAnimation = new ScaleAnimation(0,1,0,1);

scaleAnimation.setDuration(1000);

LayoutAnimationController layoutAnimationController = new LayoutAnimationController(scaleAnimation,0.5f);//动画效果、每个动画效果之间延迟一半时间运行

layoutAnimationController.setOrder(LayoutAnimationController.ORDER_RANDOM);

//加载顺序:包括从上倒下(ORDER_NORMAL)、从下到上(ORDER_REVERSE)、随机(ORDER_RANDOM)

activity_main.setLayoutAnimation(layoutAnimationController);

实现步骤

先设置动画效果

利用LayoutAnimationController ()方法添加上动画、延迟时间以及出现顺序

然后找到布局对应的layout文件,使用setLayoutAnimation()方法即可

在第二页中的listview实现的动画效果是在xml中设置的,也比较简单:

在res/anim下创建list_animation.xml文件(借用上面的scale.xml文件):

android:animation="@anim/scale"

android:delay="0.5">

在lsitview的xml文件下添加一句:

android:layoutAnimation="@anim/list_animation"

OK,以上功能完全实现~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值