Android实现动画效果详解

 更新时间:2015年07月24日 15:29:11   作者:掌缘生灭  
这篇文章主要介绍了Android实现动画效果详解,目前Android平台提供了Tween动画和Frame动画,实现这两类动画有两种方式:一种使用XML文件(文件放在res/anim),一种直接代码搞定,需要的朋友可以参考下

目前Android平台提供了两类动画一类是Tween动画,第二类就是 Frame动画,具体内容介绍请看下文:

一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变)。

第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似。

实现动画有两种方式:一种使用XML文件(文件放在res/anim),一种直接代码搞定

 1、透明度控制动画效果alpha

<!--
透明度控制动画效果alpha
 浮点型值:
 fromAlpha 动画起始时透明度
 toAlpha 动画结束时透明度
 说明:0.0 完全透明
 1.0 完全不透明
 以上值取0.0-1.0之间的 float数据类型的数字
duration 为动画持续时间
长整型:
说明:时间以毫秒为单位
-->
<alpha
 android:duration="3000"
 android:fromAlpha="0.0"
 android:toAlpha="1.0" />

代码方式:

复制代码 代码如下:

Animation animationAlpha = new AlphaAnimation(0.0f, 1.0f);
animationAlpha.setDuration(3000);
ivAnim.startAnimation(animationAlpha);
 

2、rotate旋转动画

<!--
rotate旋转动画效果

属性:interpolator 指定一个动画的插入器
有三种动画插入器:
 accelerate_decelerate_interpolator 加速-减速 动画插入器
 accelerate_interpolator 加速-动画插入器
 decelerate_interpolator 减速-动画插入器
 其他的属于特定的动画效果

浮点整型值:
 fromDegrees 为动画起始时物件的角度
 toDegrees 为动画起始时物件旋转的角度 可以大于360度
说明:当角度为负数——表示逆时针旋转
  当角度为正数——表示顺时针旋转
  (负数from——to正数:顺时针旋转
  负数from——to负数:逆时针旋转
  正数from——to正数:顺时针旋转)
  
pivotX 为动画相对于物件的X坐标的开始位置
pivotY 为动画相对于物件的Y坐标的开始位置
说明:以上两个属性值 从0%——100%中取值
 50%为物件的X或Y方向坐标上的中点位置
长整型类型:
duration 为动画持续时间
说明:时间以毫秒为单位
 -->
<rotate
 android:duration="3000"
 android:fromDegrees="0"
 android:interpolator="@android:anim/accelerate_decelerate_interpolator"
 android:pivotX="50%"
 android:pivotY="50%"
 android:toDegrees="+350" />

复制代码 代码如下:

Animation animationRotate = new RotateAnimation(0.0f, +350.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animationRotate.setDuration(3000);
ivAnim.startAnimation(animationRotate);

3、尺寸伸缩动画效果 scale

<!--
尺寸伸缩动画效果 scale
属性:interpolator 指定一个动画的插入器
  有三种动画插入器:
  accelerate_decelerate_interpolator 加速-减速 动画插入器
  accelerate_interpolator 加速-动画插入器
  decelerate_interpolator 减速-动画插入器
  其他的属于特定的动画效果
浮点型值:
 fromXScale 动画起始时 X坐标上的伸缩尺寸
 toXScale 动画结束时 X坐标上的伸缩尺寸
 fromYScale 动画起始 Y时坐标上的伸缩尺寸
 toYScale 动画结束时 Y坐标上的尺寸
 说明:以上四种属性值
 0.0表示收缩到没有
 1.0表示正常无伸缩
  值小于1.0表示收缩
  值大于1.0表示放大
 pivotX 动画相对于物件的X坐标的开始位置
 pivotY 动画相对于武将的Y坐标的开始位置
 说明:以上两个属性值 从0%-100%中取值
 长整型:
 duration 动画持续时间
 说明:时间以毫秒为单位
 布尔型值:
 fillAfter 当设置为true,该动画转化在动画结束后被应用
-->

<scale
 android:duration="700"
 android:fillAfter="false"
 android:fromXScale="0.0"
 android:fromYScale="0.0"
 android:interpolator="@android:anim/accelerate_decelerate_interpolator"
 android:pivotX="50%"
 android:pivotY="50%"
 android:toXScale="1.4"
 android:toYScale="1.4" />

代码方式:

Animation animationScale = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animationScale.setDuration(3000);
ivAnim.startAnimation(animationScale);

4、translate 位置转移动画效果

<!--
translate 位置转移动画效果
 整型值:
 fromXDelta 动画起始时 X坐标上的位置 
 toXDelta 动画结束时 X坐标上的位置
 fromYDelta 动画起始时 Y坐标上的位置
 toYDlta 动画结束时 Y坐标上的位置
 注意:没有指定fromXTra toXType fromYType toYType 时候,默认是以自己为相对参照物
 长整型:duration 为动画持续时间
    时间以毫秒为单位
-->

<translate
 android:duration="2000"
 android:fromXDelta="30"
 android:fromYDelta="30"
 android:toXDelta="-80"
 android:toYDelta="300" />

复制代码 代码如下:

Animation animationTranslate = new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);
animationTranslate.setDuration(3000);
ivAnim.startAnimation(animationTranslate);
 

xml文件方式使用的话就两行代码

复制代码 代码如下:

Animation anim = AnimationUtils.loadAnimation(activity, R.anim.anim_xxx);
ivAnim.startAnimation(anim);
 

5、frame帧动画(文件放在res/drawable)

<!--
 根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画 
 根标签下,通过item标签对动画中的每一个图片进行声明 
 android:duration 表示展示所用的该图片的时间长度 

-->
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
 android:oneshot="true" >

 <item
 android:drawable="@drawable/icon_frame1"
 android:duration="200">
 </item>
 <item
 android:drawable="@drawable/icon_frame2"
 android:duration="200">
 </item>
 <item
 android:drawable="@drawable/icon_frame3"
 android:duration="200">
 </item>
 <item
 android:drawable="@drawable/icon_frame4"
 android:duration="200">
 </item>
 <item
 android:drawable="@drawable/icon_frame5"
 android:duration="200">
 </item>
 <item
 android:drawable="@drawable/icon_frame6"
 android:duration="50">
 </item>
</animation-list>

xml帧动画使用代码:
ivFrame = (ImageView) findViewById(R.id.iv_frame_image);
ivFrame.setImageResource(R.drawable.anim_frame); 
animation = (AnimationDrawable) ivFrame.getDrawable();
animation.setOneShot(false);//循环
animation.start();

以上就是针对Android实现动画效果的全部内容,希望大家能够喜欢。

相关文章

  • Android中删除sdcard里文件的命令

    Android中删除sdcard里文件的命令

    这篇文章主要介绍了Android中删除sdcard里文件的命令,本文讲解了删除android模拟器或手机上的sd卡文件的方法,需要的朋友可以参考下
    2015-04-04
  • Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法

    Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法

    这篇文章主要介绍了Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法,涉及Android属性设置及activity操作的相关技巧,需要的朋友可以参考下
    2015-11-11
  • android canvas drawText()文字居中效果

    android canvas drawText()文字居中效果

    这篇文章主要为大家详细介绍了android canvas drawText()文字居中效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Kotlin开发笔记之委托属性与区间(译)

    Kotlin开发笔记之委托属性与区间(译)

    最近在学习kotlin,发现了一些比较重要的知识点,所以下面这篇文章主要给大家介绍了关于Kotlin开发笔记之委托属性与区间的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12
  • Kotlin作用域函数使用示例详细介绍

    Kotlin作用域函数使用示例详细介绍

    作用域函数:是Kotlin标准库中的内联函数,作用在对象上时,执行给定的block代码块。可以在block代码块中通过it,this代表当前对象,进行代码逻辑处理
    2023-02-02
  • Android APK优化工具Zipalign详解

    Android APK优化工具Zipalign详解

    本文主要介绍Android APK优化工具Zipalign,这里整理了相关资料,并详细介绍如何使用Zipalign工具及使用技巧,有需要的小伙伴可以参考下
    2016-09-09
  • Android 国际货币格式化的示例代码

    Android 国际货币格式化的示例代码

    本篇文章主要介绍了Android 国际货币格式化的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Android App使用SQLite数据库的一些要点总结

    Android App使用SQLite数据库的一些要点总结

    这篇文章主要介绍了Android App使用SQLite数据库的一些要点总结,使用Sqlite作为应用的嵌入式数据库非常轻便,需要的朋友可以参考下
    2016-03-03
  • Android编程实现activity dialog透明背景的方法

    Android编程实现activity dialog透明背景的方法

    这篇文章主要介绍了Android编程实现activity dialog透明背景的方法,涉及Activity相关属性设置及配置文件操作技巧,需要的朋友可以参考下
    2017-07-07
  • android自定义等级评分圆形进度条

    android自定义等级评分圆形进度条

    这篇文章主要为大家详细介绍了android自定义等级评分圆形进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07

最新评论