Android ApiDemo学习(四)Views——1 animation

demo中有四个animation效果:

  • 3D Transition

本例显示了一个listview,点击一个item之后,跳转到一幅图片中。

 

动画1:listview的显示

listview的布局定义在animations_main_screen.xml中。这个listview设置了一个重要属性——layoutAnimation,值为layout_bottom_to_top_slide。表示这个listview的显示动画效果在layout_bottom_to_top_slide.xml文件中定义。我们查看layout_bottom_to_top_slide.xml文件:delay属性设置listview的每个item显示的延迟时间;animationOrder表示item的显示顺序,normal表示顺序、reverse表示逆序、random表示随机;animation设置每个item显示的动画。

每个item的动画定义在slide_right.xml文件中。可以看到,这是一个平移动画,设置了平移动画的插值、起始位置和动画持续的时间。其中插值见下一个demo的讲解。

 

动画2:点击item之后的动画

点击各个item之后,listview绕y轴旋转到背面,而图片像是在listview背面一样被旋转到屏幕上。这个动画是怎么做的呢?

1.首先看定义这个listview的布局文件animations_main_screen.xml文件。可以看到,FrameLayout下定义了一个ListView和一个ImageView。这两个view都是framelayout的子view,即都是靠左上角绘制。但初始时设置ImageView不可见(visibility属性设置为gone)。点击了list的一个item之后,才设置这个ImageView的显示图片。

2.看点击item后的java代码,见Transition3d.java

-点击listview的item后,设置ImageView的图片资源。然后加载动画,正向旋转90度,0-90

-点击图片后,加载动画,逆向旋转90度,180-90。二者加载的动画是自定义动画Rote3dAnimation的对象。

-设置动画的一些参数:持续时间、插值等

-设置动画的监听器:设置动画完成后做什么。本例就是显示另一个view(listview的动画完成后显示imageview,imageview的动画完成后显示listview)。

-调用startAnimation启动动画

3.定义这个绕y轴旋转的动画,见Rotate3dAnimation.java

  • Interpolators

顾名思义,这个例子展示“插值”。什么叫插值呢?通常我们需要一个动画,只定义几个关键帧,中间帧是系统添加进去的。那么默认就是匀速的从定义的关键帧1到2到3...android为我们提供了改变这种默认插值帧的方法。

看代码:

1 首先获得一个平移动画的对象,指定这个平移的开始位置和结束位置

2 设置一些参数:动画持续的时间、动画开始时间、动画持续的方式、动画持续的次数等

3 为这个动画设置插值:android为我们提供了可以直接使用的插值变量,比如:加速、减速、抖动等。

  • Push

本例主要示范ViewFlipper的使用。ViewFlipper作为一个布局xml文件中的标签使用,作用是让其内部的子控件切换显示。android:flipInterval定义切换的时间间隔。java代码中可以先获取ViewFliper的id,从而得到ViewFlipper对象,调用startFlipping函数启动切换。

可以通过setInAnimation和setOutAnimation函数设置切换动画的类型,参数为一个Animation对象。这个对象可以通过AnimationUtils.loadAnimation函数得到。

loadAnimation函数的参数是Animation的资源id。这个资源可以是android自带的,比如fade_in,fade_out;也可以自定义。

  • Shake

Animation.java文件,布局为animation_1.xml.

看代码:

1.首先使用AnimationUtils.loadAnimation函数加载一个动画效果:

---参数2:是资源中的Animation对象的id,定义在shake.xml中。可以看到shake.xml文件中定义了一个translate,也就是通过循环平移实现抖动。属性中设置的平移的起始坐标、结束坐标、时间间隔、循环平移的次数。

---返回值:是参数2的Animation对象。

2.使用EditText.startAnimation()开始一个动画,将1步骤中的Animation对象作为参数传进去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值