mars android视频哪集讲到listview,Mars视频笔记——Animation

Animations的使用(1)

什么是Animations

提供了一系列的动画效果,可以应用在绝大多数控件中

Animations的分类

1Tweened Animations 渐变动画

提供了旋转,移动,伸展,淡出等效果

2Frame-by-Frame Animations

可以创建一个Drawable序列,按照指定时间间歇一个个显示

Tweened Animations:

1 Alpha 淡入淡出效果

2 Scale 缩放效果

3 Rotate 旋转效果

4 Translate 移动效果

Animations的第一种使用方法(代码实现,xml实现)

使用Tweened Animations的步骤:

1 创建一个AnimationSet对象

AnimationSet animationSet=new AnimationSet(true);

2 根据需要创建相应的Animation对象(旋转,移动,伸展,淡出)

AlphaAnimation alphaAnimation = new AlphaAnimation(1,0); //参数为from..to..

*其他:

RotateAnimation rotateAnimation = new RotateAnimation(0,360,Animation.RELATIVE_TO_PARENT(有3种),1f,Animation.RELATIVE_TO_PARENT,0f);

3种坐标种类Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_PARENT,Animation.ABSOLUTE

ScaleAnimation scaleAnimation = new ScaleAnimation(1,0.1f,1,0.1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);

TranslateAnimation .......

3 根据软件动画的需求,为Animation对象设置相应数据

animationSet.setDuration(1000); //动画执行时间

4 将Animation对象添加到AnimationSet对象中

animationSet.addAnimation(alphaAnimation);

5 使用控件对象开始执行AnimationSet

imageView.startAnimation(animationSet);

Tweened Animations 通用属性

setDuration

setFillAfter

SetFillBefore

setStartOffSet

setRepeatCount

Animations使用(2)

接上篇

Animations的第二种使用方法(第一种见1)

步骤:

1 在res文件夹线面新建一个名为anim的文件夹

2 创建xml文件,并首先加入set标签,改标签如下

Xml代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

android:interpolator="@android:anim/accelerate_interpolator">

...

android:interpolator="@android:anim/accelerate_interpolator">

...

3 在该标签中加入rotate,alpha,scale或者translate标签

例:

Alpha的alpha.xml文件编写方法(这些标签都是放在set标签中的)

Xml代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

android:toAlpha="0.0"

android:atartOffset="500"

android:duration="500"/>

android:toAlpha="0.0"

android:atartOffset="500"

android:duration="500" />

rotate.xml

Xml代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

android:toDegrees="+350"//正350度

android:pivotX="50%"

android:pivotY="50%"

android:duration="3000"/>

android:toDegrees="+350" //正350度

android:pivotX="50%"

android:pivotY="50%"

android:duration="3000" />

这里要特别注意跟位置有关的参数pivotX和pivotY

3种写法对应3种相对位置方式的设置方式:

android:pivotX="50" 绝对定位

android:pivotX="50%" 相对于控件本身

android:pivotX="50%p" 相对于父控件

translate.xml

Xml代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

android:toXDelta="100%"

android:fromYDelta="0%"

android:toYDelta="100%"

android:duration="1000"/>

android:toXDelta="100%"

android:fromYDelta="0%"

android:toYDelta="100%"

android:duration="1000" />

scale.xml

Xml代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

android:toXScale="0.0"

android:fromYScale="1.0"

android:toYScale="0.0"

android:pivotX="50%"

android:pivotY="50%"

android:duration="2000"/>

android:toXScale="0.0"

android:fromYScale="1.0"

android:toYScale="0.0"

android:pivotX="50%"

android:pivotY="50%"

android:duration="2000" />

4 在代码中使用AnimationUtils装载xml文件,并生成Animation对象

Java代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

Animation animation=AnimationUtils.loadAnimation(MainActivity.this, R.anim.alpha);//载入布局文件

imageView.startAnimation(animation);

Animations的使用(3)

1 AnimationSet的使用方法

什么是AnimationSet

1 AnimationSet是Animation的子类

2 一个AnimationSet包含了一系列的Animation

3 针对AnimationSet设置一些Animation的常见属性(如StartOffset,duration等),可以被包含在AnimationSet当中的Animation继承

使用步骤:(类似1中的例子 只不过含有2个动画效果)

Java代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

AnimationSet animationSet =newAnimationSet(ture);

AlpahaAnimation alpha =newAlphaAnimation(...);

RotateAnimation rotate =newRotateAnimation(...);

animationSet.addAnimation(alpha);

animationSet.addAnimaion(rotate);

animationSet.setDuration(2000);

animationSet.setStartOffset(500);

imageView.startAnimation(animationSet);

AnimationSet animationSet = new AnimationSet(ture);

AlpahaAnimation alpha = new AlphaAnimation(...);

RotateAnimation rotate = new RotateAnimation(...);

animationSet.addAnimation(alpha);

animationSet.addAnimaion(rotate);

animationSet.setDuration(2000);

animationSet.setStartOffset(500);

imageView.startAnimation(animationSet);

2 Interpolator的使用方法

Interpolator定义了动画变化速率,在Animations框架中定义了以下几种Interpolator

AccelerateDecelerateInterpolator:在动画开始和结束的地方速率变化较慢,中间的时候加速

AccelerateInterpolator:在动画开始的地方速率改变较慢,然后加速

CycleInterpolator:动画循环播放特定次数,速率改变沿正弦曲线

DecelerateInterpolator:在动画开始的地方速率改变较慢,然后减速

LinearInterpolator:以均匀的速率改变

设置的地方就在set标签中的 android:interpolator="@android:anim/accelerate_interpolator"

而之后还有一个android:shareInterpolator="true" 从名字就可以看到这是为set中所有的动画设置Interpolator

如果要单独设置 则将shareInterpolator设为false 然后为每个动画中单独定义Interpolator

以上是在xml中设置,如果要在代码中设置

animationSet.setInterpolator(new AccelerateInterpolator());(也可以单独设置)

注意在AnimationSet的构造方法中有一个boolean参数,这个参数就是shareInterpolator的设定

3 Frame-By-Frame Animations的使用方法

1 在res/drawable中创建一个xml文件,定义Animation的动画播放序列 anim_nv.xml

Xml代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

android:oneshot="false">

android:duration="500"/>

android:duration="500"/>

android:duration="500"/>

android:duration="500"/>

android:oneshot="false">

android:duration="500" />

android:duration="500" />

android:duration="500" />

android:duration="500" />

2 为ImageView设置背景资源

Java代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

imageView.setBackgroundResource(R.drawable.anim_nv);

imageView.setBackgroundResource(R.drawable.anim_nv);

3 通过ImageView得到AnimationDrawable

Java代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground();

AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground();

3 执行动画

Java代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

animationDrawable.start();

Animations使用(4)

LayoutAnimationController的使用方法(与ListView结合使用为例)

什么是LayoutAnimationController

1 LayoutAnimationController用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果

2 每一个控件都有相同的动画效果

3 这些控件的动画效果在不同的时间显示出来

4 LayoutAnimationController可以在xml文件中设置,也可以在代码中设置

在XML中使用LayoutAnimaionController

1 在res/anim文件夹中创建一个文件,名为list_anim_layout.xml

Xml代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

android:delay="0.5"

android:animationOrder="random"

android:animation="@anim/list_anim"/>

android:delay="0.5"

android:animationOrder="random"

android:animation="@anim/list_anim" />

注意到list_anim这个xml文件,其中配置了动画效果,也就是一个动画配置文件(见3中)

2 在布局文件中为ListView添加如下配置(就是在标签中添加一个属性)

android:layoutAnimation="@anim/list_anim_layout"

在代码中使用LayoutAnimationController

Java代码 0818b9ca8b590ca3270a3433284dd417.png 0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

1创建一个Animation对象:

可以通过装载xml,也可以直接使用Animation的构造函数创建Animation对象

2创建LayoutAnimationController对象

LayoutAnimationController lac=newLayoutAnimationController(animation);

3设置控件显示顺序

lac.setOrder(LayoutAnimationController.ORDER_NORMAL);

4为ListView设置LayoutAnimationController属性:

listView.setLayoutAnimation(lac);

1 创建一个Animation对象:

可以通过装载xml,也可以直接使用Animation的构造函数创建Animation对象

2 创建LayoutAnimationController对象

LayoutAnimationController lac=new LayoutAnimationController(animation);

3 设置控件显示顺序

lac.setOrder(LayoutAnimationController.ORDER_NORMAL);

4 为ListView设置LayoutAnimationController属性:

listView.setLayoutAnimation(lac);

AnimationListener的使用方法

什么是AnimationListener

1 Animation是一个监听器

2 该监听器在动画执行的各个阶段会得到通知,从而调用相应的方法

3 主要包含下面的三个方法

onAnimationEnd(Animation animation)

onAnimationRepeat(Animation animation)

onAnimationStart(Animation animation)

使用方法:

animation.setAnimationListener(new XxxAnimationListener);

其中XxxAnimationListener继承AnimationListene

在其中实现三个onXXX方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值