Android UI开发第十二篇——动画效果Animation

Android框架本身就使用了大量的动画效果,比如Activity切换的动画效果,Dialog弹出和关闭时的渐变动画效果以及Toast显示信息时的淡入淡出效果等等。Android系统框架为我们提供了一些动画类及其工具类,所以在Andorid应用中使用动画效果非常简单。Android中可以在xml中定义Animation,也可以在java code中定义。

Android中动画的实现分两种方式,一种方式是补间动画 Tween Animation,就是说你定义一个开始和结束,中间的部分由android自身实现。另一种叫逐帧动画 Frame Animation,就是说一帧一帧的连起来播放就变成了动画。

一、Tween Animation

xml中实现:

alpha渐变透明度动画效果
scale渐变尺寸伸缩动画效果
translate画面转换位置移动动画效果
rotate画面转移旋转动画效果


JavaCode 

AlphaAnimation渐变透明度动画效果
ScaleAnimation渐变尺寸伸缩动画效果
TranslateAnimation画面转换位置移动动画效果
RotateAnimation画面转移旋转动画效果

使用XML文件定义Tween Animation时XML文件的根节点可以是<alpha>、<scale> <translate>、<rotate>或者是把它们都放入<set>节点中。如下:

<?xml version="1.0" encoding="utf-8"?>
< set xmlns:android="http://schemas.android.com/apk/res/android">
  <alpha/>
  <scale/>
  <translate/>
  <rotate/>
< /set>

Java Code实现如下:

AlphaAnimation:

AnimationSet animationSet = new AnimationSet(true);//创建一个AnimationSet对象    
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);//创建一个AlphaAnimation对象             
alphaAnimation.setDuration(1000);//设置动画执行的时间(单位:毫秒)         
animationSet.addAnimation(alphaAnimation);//将AlphaAnimation对象添加到AnimationSet当中          
view.startAnimation(animationSet);//使用view的startAnimation方法开始执行动画      

RotateAnimation :

AnimationSet animationSet = new AnimationSet(true);  
/**  
* 前两个参数定义旋转的起始和结束的度数,后两个参数定义圆心的位置  
*/  
RotateAnimation rotateAnimation = new RotateAnimation(0, 360,      
                    Animation.RELATIVE_TO_PARENT, 1f,      
                    Animation.RELATIVE_TO_PARENT, 0f);      
    rotateAnimation.setDuration(5000);      
    animationSet.addAnimation(rotateAnimation);      
    imageView.startAnimation(animationSet); 

TranslateAnimation:

AnimationSet animationSet = new AnimationSet(true);      
/**  
             * x和y轴的起始和结束位置  
*/  
TranslateAnimation translateAnimation = new TranslateAnimation      
            (      
                    Animation.RELATIVE_TO_SELF, 0f,       
                    Animation.RELATIVE_TO_SELF,0.5f,       
                    Animation.RELATIVE_TO_SELF, 0f,      
                    Animation.RELATIVE_TO_SELF, 1.0f      
            );      
            translateAnimation.setDuration(1000);      
            animationSet.addAnimation(translateAnimation);      
view.startAnimation(animationSet);    

ScaleAnimation:

AnimationSet animationSet = new AnimationSet(true);      
/**  
             * 围绕一个点伸缩  
*/  
ScaleAnimation scaleAnimation = new ScaleAnimation(1, 0.1f, 1,      
                    0.1f, Animation.RELATIVE_TO_SELF, 0.5f,      
                    Animation.RELATIVE_TO_SELF, 0.5f);      
            animationSet.addAnimation(scaleAnimation);      
            animationSet.setStartOffset(1000);      
            animationSet.setFillAfter(true);      
            animationSet.setFillBefore(false);      
            animationSet.setDuration(2000);      
view.startAnimation(animationSet);   



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值