Animation android动画
来源:互联网 发布:自动发卡源码正版 编辑:程序博客网 时间:2024/06/06 12:30
View动画
view动画有四种动画
平移动画 \Translate /> TranslateAnimation
旋转动画 Rotate /> RotateAnimation
透明度动画 Alpha /> AlphaAnimation
缩放动画 Scale /> ScaleAnimation
动画集合 Set /> AnimationSet
>
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"//动画集合的差值器 android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:repeatCount="infinite" android:repeatMode="reverse" //表示集合中的动画是否和集合共享同一个差值器。如果集合不指定差值器,那么子元素就需要单独指定所需要的差值器或者是默认值 android:shareInterpolator="true" > <alpha android:duration="3000" android:fromAlpha="0" //重复次数 0 表示执行一次 1 表示重复执行一次 等待 (infinite) 表示无限次 android:repeatCount="infinite" //重复方式 reverse 往返循环方式 restart 原点重复方式 android:repeatMode="reverse" //动画停止后,View是否停留在结束位置 true 停留 false 不停留 android:fillAfter = "true" android:toAlpha="1" /> <rotate android:duration="3000" android:fromDegrees="0" android:pivotX="0.5" android:pivotY="0.5" android:repeatCount="infinite" android:repeatMode="reverse" android:toDegrees="360" android:zAdjustment="top" /> <scale android:duration="3000" android:fromXScale="0" android:fromYScale="0" android:pivotX="0" android:pivotY="0" android:repeatCount="infinite" android:repeatMode="reverse" android:toXScale="1" android:toYScale="1" /> <translate android:duration="3000" android:fromXDelta="0" android:fromYDelta="0" android:repeatCount="infinite" android:repeatMode="reverse" android:toXDelta="100%p" android:toYDelta="100%p" /> </set>
使用动画
final TextView tv = (TextView) findViewById(R.id.tv); AnimationSet as= (AnimationSet) AnimationUtils.loadAnimation(this, R.anim.animaiton_set_anim); //设置动画监听 as.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub tv.setText("start"); } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub tv.setText("repeat"); } @Override public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub tv.setText("end"); } }); //启动动画 tv.setAnimation(as); as.start();
帧动画
帧动画是顺序播放预先定义好的一组图片,不同与View动画,系统提供了另一个类AnimationDrawable来使用帧动画。
帧动画使用起来比较简单
- 1.首先在xml中定义一个animationDrawable
<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@mipmap/sleep_01" android:duration="500"></item> <item android:drawable="@mipmap/sleep_02" android:duration="500"></item></animation-list>
- 2.然后将上述的Drawable作为View的背景并通过Drawable来播放动画即可:
ImageView iv = (ImageView) findViewById(R.id.iv); iv.setBackgroundResource(R.drawable.animation_drawable); AnimationDrawable ad = (AnimationDrawable) iv.getBackground(); ad.start();
NOTE:帧动画使用比较简单,但是比较容易引起OOM,所以在使用帧动画时,应尽量避免使用过多较大的图片
View动画的特殊使用场景
1.在ViewGroup中可以控制子元素的出场效果
2.在Activity中可以实现不同Activity之间的切换效果
1.LayoutAnimation
LayoutAnimation作用于ViewGroup,为ViewGroup指定一个动画,这样当它的子元素出场时都会具有这种动画效果。这种效果常常被用来在ListView上。
LayoutAnimation也是一个View动画
为了给ViewGroup的子元素加上出场效果,需要遵循以下步骤。1.1 定义LayoutAnimation
<?xml version="1.0" encoding="utf-8"?><layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:delay="0.5" android:animationOrder="normal" android:animation="@anim/slide_in_from_right" ></layoutAnimation>
android:delay
`表示子元素开始动画的时间延迟,比如子元素入场动画的时间周期是300ms,那么0.5表示子元素都需要延迟150ms才能播放入场动画。总体来说,第一个字元素延迟150ms,第二个子元素延迟300ms,依次类推。
android:animationOrder
表示子元素动画的顺序,有三种选型:normal,reverse和random,其中normal表示顺序显示,即排在前面的子元素先开始播放入场动画;reverse表示逆向显示,即排在后面的子元素先开始播放入场动画;random则是随机播放入场动画
android:animation
为子元素指定具体的入场动画1.2 为子元素制定具体的入场动画
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="200" android:fromXDelta="100%p" android:toXDelta="0" /></set>
1.3 为ViewGroup指定android:layoutAnimation属性。如:android:layoutAnimation= “@anim/anim_layout”.对于ListView来说,这样ListView的item就具有了出场动画了,这种方式适用于所有的VIewGroup.
``` <ListView android:id="@+id/lv_all_contact" android:layoutAnimation="@anim/contact_list" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> ```
1.4.除了在XML中指定LayoutAnimation外,还可以通过LayoutAnimationController来实现。如下:
lv =(ListView)findViewById(R.id.lv_all_contact); Animation animation = AnimationUtils.loadAnimation(this, R.anim.contact_list); LayoutAnimationController layoutAnimationController = new LayoutAnimationController(animation); layoutAnimationController.setDelay(0.5f); layoutAnimationController.setOrder(LayoutAnimationController.ORDER_NORMAL); lv.setLayoutAnimation(layoutAnimationController);
2 Activity之间的跳转动画
Activity之间的跳转动画
- Android动画-Android Animation
- 【Android】【动画】Android 动画 (Animation)
- Android 动画效果 --Animation
- Android 动画效果 --Animation
- Android 动画效果 --Animation
- Android Animation动画效果
- android Animation 动画效果
- Android的animation(动画)
- Android animation动画
- Android动画--Frame Animation
- Android Property Animation动画
- Android Animation动画
- Android动画(Animation)
- android Animation 动画效果
- Android 动画效果animation
- Android Animation动画体系结构
- Android animation 定义动画
- android animation动画
- C#利用 Face++sdk 实现wpf小程序【3】 6/13/22
- matlab自己编写插值方法-好用
- 游戏角色类
- MySQL数据库安装配置
- 【bzoj4320】ShangHai2006 Homework
- Animation android动画
- ubuntu16.04 编译android 源码出现的错误
- java单列类
- 浏览器控制台批量删除新浪微博
- Android开发之MdiaPlayer详解
- 程序员面试金典题解 清除行列
- Redis 它是什么?它用来做什么?它的优势与短板如何?
- vim 与 ascii 码表与可显示字符
- 基础总结篇之一:Activity生命周期