博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android UI 动画效果Animation
阅读量:5848 次
发布时间:2019-06-18

本文共 2367 字,大约阅读时间需要 7 分钟。

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:

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

RotateAnimation :

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

TranslateAnimation:

  1. AnimationSet animationSet = new AnimationSet(true);    
  2. /** 
  3.              * x和y轴的起始和结束位置 
  4. */
  5. TranslateAnimation translateAnimation = new TranslateAnimation    
  6.             (    
  7.                     Animation.RELATIVE_TO_SELF, 0f,     
  8.                     Animation.RELATIVE_TO_SELF,0.5f,     
  9.                     Animation.RELATIVE_TO_SELF, 0f,    
  10.                     Animation.RELATIVE_TO_SELF, 1.0f    
  11.             );    
  12.             translateAnimation.setDuration(1000);    
  13.             animationSet.addAnimation(translateAnimation);    
  14. view.startAnimation(animationSet);  

ScaleAnimation:

  1. AnimationSet animationSet = new AnimationSet(true);    
  2. /** 
  3.              * 围绕一个点伸缩 
  4. */
  5. ScaleAnimation scaleAnimation = new ScaleAnimation(1, 0.1f, 1,    
  6.                     0.1f, Animation.RELATIVE_TO_SELF, 0.5f,    
  7.                     Animation.RELATIVE_TO_SELF, 0.5f);    
  8.             animationSet.addAnimation(scaleAnimation);    
  9.             animationSet.setStartOffset(1000);    
  10.             animationSet.setFillAfter(true);    
  11.             animationSet.setFillBefore(false);    
  12.             animationSet.setDuration(2000);    
  13. view.startAnimation(animationSet);     

代码下载地址:

转载地址:http://sywjx.baihongyu.com/

你可能感兴趣的文章
Python基本数据类型之字典
查看>>
php引用(&)详解及注意事项
查看>>
OSChina 周一乱弹 —— 只要给网,这种生活我能过一辈子
查看>>
短信猫JAVA二次开发包SMSLib,org.smslib.TimeoutException: No response from device解决方案...
查看>>
CloudStack 4.4学习总结之cloudstack-management安装
查看>>
【动弹有奖】——OSC登录并发送动弹分析(附python源码)
查看>>
protocol buffer安装及使用(非常详细)
查看>>
VTSS Error code
查看>>
360提供的Php防注入代码
查看>>
修改phpMyAdmin使其能够管理多台远程MySQL服务器
查看>>
RabbitMQ SSL安全认证
查看>>
CC***原理及防范方法
查看>>
windows phone (12) 小试自定义样式
查看>>
Linux后台启动脚本
查看>>
jna dll c
查看>>
CentOS 升级现有PHP版本
查看>>
(一) pyhon 基础语法(数值 字符串 元组 列表 字典)
查看>>
springboot 学习笔记【1】开发第一个spring boot应用
查看>>
HDOJ 1003:求一串数字中和最大的连续子串
查看>>
RedHat 5.6_x86_64 + ASM + RAW+ Oracle 10g RAC (二)
查看>>