Android ApiDemo学习(四)Views——1 animation
来源:互联网 发布:西成高铁 知乎 编辑:程序博客网 时间:2024/05/17 21:59
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对象作为参数传进去。
- Android ApiDemo学习(四)Views——1 animation
- Android ApiDemo学习(四)Views——7 Layout Animation
- Android ApiDemo学习(四)Views——2 autocomplete
- Android ApiDemo学习(四)Views——5 Grid
- Android ApiDemo学习(四)Views——3 Buttons、Chronometer、Controls、Custom、DateWidget
- Android ApiDemo学习(四)Views—— 4 Expandable Lists、Focus、Gallery
- Android ApiDemo 学习(四)Views——6 Imagebutton、ImageSwitcher、ImageView
- Android ApiDemo学习(五)Animation—— 2 Cloning
- Android ApiDemo学习(五)Animation—— 3 CustomEvaluator
- Android ApiDemo学习(五)Animation—— 5 Events
- Android ApiDemo学习(五)Animation—— 1 Bouncing Balls
- Android ApiDemo学习(五)Animation—— 4 Default Layout Animation
- Android ApiDemo学习(五)Animation—— 6 Hide-Show Animation
- APIDemo学习笔记——Android上几种简单的Animation使用方法(二)
- APIDemo学习笔记——Android上几种简单的Animation使用方法(一)
- Android ApiDemo学习(五)Animation——7 Layout Animations
- APIDemo学习笔记——Android上几种简单的Animation使用方法(一)
- APIDemo学习笔记——Android上几种简单的Animation使用方法(二)
- Adobe reader update 无法将数值disableexceptionchainvaliddation写入键/sofeware...请验证您对该有足够
- HDU 4350 - Card
- 理解REDO LOG(1) 介质恢复和实例恢复的基本概念
- 经典Java线程池的代码及各部分功能简介
- GDB 多线程调试基本命令和一个实例问题的解决(转贴)
- Android ApiDemo学习(四)Views——1 animation
- ZooKeeper之.net客户端编译
- 在ubuntu1204上安装pps
- 测试管理002:发现的缺陷数不是一个好的绩效考核指标
- java集合
- Junit4 实践参考
- WTL使用CheckBox
- 数据结构与算法分析-第一章Java类(03)
- 黑马程序员____求多项式系数