Android(安卓)ApiDemos示例解析
Android ApiDemos示例解析(3): App->Activity->Animation
2011 年 04 月 29 日App->Activity->Animation 示例用于演示不同Activity切换时动态效果。例子中定义了两种动画效果,渐变Fade In, 新出现的Activity由浅入深逐渐显示,放大效果Zoom ,新出现的Activity由小及大逐渐显示。
Android 中 Animation 资源可以分为两种:
- Tween Animation 对单个图像进行各种变换(缩放,平移,旋转等)来实现动画。
- Frame Animation 由一组图像顺序显示显示动画。
Animation 中使用的是Tween Animation, 使用的资源为R.anim.fade, R.anim.hold,R.anim.zoom_enter, R.anim.zoom_exit。
其中R.anim.fade, R.anim.zoom_enter分别为Fade In 和 Zoom动画资源。其定义为
fade.xml
android:interpolator=”@android:anim/accelerate_interpolator”
android:fromAlpha=”0.0″ android:toAlpha=”1.0″
android:duration=”@android:integer/config_longAnimTime” />
zoom_center.xml
android:pivotX=”50%p” android:pivotY=”50%p”
android:duration=”@android:integer/config_mediumAnimTime” />
tween animation 资源定义的格式如下:
<?xml version=”1.0″ encoding=”utf-8″?>
android:shareInterpolator=[ ” true ” false “>
android:fromAlpha=”float”
android:toAlpha=”float” />
android:toXScale=”float”
android:fromYScale=”float”
android:toYScale=”float”
android:pivotX=”float”
android:pivotY=”float” />
android:toXDelta=”float”
android:fromYDelta=”float”
android:toYDelta=”float” />
android:toDegrees=”float”
android:pivotX=”float”
android:pivotY=”float” />
android:interpolator 为Interpolator资源ID,Interpolator定义了动画的变化速率,动画的各帧的显示可以加速,减速,重复显示。
android:shareInterpolator 如果想为
定义Fade in ,Fade out 动画,其对应的Android类AlphaAnimation,参数由fromAlpha,toAlpha定义。
Animation中的Fade In和Zoom In按钮的事件处理代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | private OnClickListener mFadeListener = new OnClickListener() { public void onClick(View v) { // Request the next activity transition (here starting a new one). startActivity( new Intent(Animation. this , Controls1. class )); // Supply a custom animation. This one will just fade the new // activity on top. Note that we need to also supply an animation // (here just doing nothing for the same amount of time) for the // old activity to prevent it from going away too soon. overridePendingTransition(R.anim.fade, R.anim.hold); } }; private OnClickListener mZoomListener = new OnClickListener() { public void onClick(View v) { // Request the next activity transition (here starting a new one). startActivity( new Intent(Animation. this , Controls1. class )); // This is a more complicated animation, involving transformations // on both this (exit) and the new (enter) activity. Note how for // the duration of the animation we force the exiting activity // to be Z-ordered on top (even though it really isn't) to achieve // the effect we want. overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit); } }; |
从代码可以看到Activity Animation到其它Activity Controls1 切换的动画使用overridePendingTransition 来定义,函数overridePendingTransition(int enterAnim, int exitAnim) 必须定义在StartActivity(Intent)或是 Activity.finish()之后来定义两个Activity切换时的动画,enterAnim 为新Activity出现时动画效果,exitAnim则定义了当前Activity退出时动画效果。
更多相关文章
- Android(安卓)RecyclerView 的点击事件
- Android的TextView与Html相结合的用法
- Android(安卓)自定义View基本用法
- Android(安卓)自定义实现switch开关按钮
- 关于Android(安卓)Settings中的八个问题
- 【起航计划 031】2015 起航计划 Android(安卓)APIDemo的魔鬼步伐
- 【自定义View系列】android的UI结构
- TextView文字横向自动滚动(跑马灯)
- Android(安卓)GIF图片显示