zoukankan      html  css  js  c++  java
  • 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:

    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://www.devdiv.com/forum.php?mod=viewthread&tid=88504&pid=546599&page=1&extra=#pid546599

  • 相关阅读:
    Android Studio中图片的格式转换
    VS2013关于C++ Primer5 的3.42题报错
    VS2013 注释多行与取消多行注释快捷键
    【Ubuntu】安装tar.gz文件
    vs下程序运行结果框闪退的解决方案
    深度学习相关链接
    问题解决:Failed to get convolution algorithm. This is probably because cuDNN failed to initialize
    【验证码识别】Pillow、tesseract-ocr与pytesseract模块的安装以及错误解决
    霍夫变换原理(看完就懂)
    python 字节数组和字符串的互转
  • 原文地址:https://www.cnblogs.com/bavariama/p/2881021.html
Copyright © 2011-2022 走看看