Android ApiDemos示例解析(3): App->Activity->Animation

发表于 guidebee

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:interpolator=”@android:anim/decelerate_interpolator”>
android:fromYScale=”2.0″ android:toYScale=”1.0″
android:pivotX=”50%p” android:pivotY=”50%p”
android:duration=”@android:integer/config_mediumAnimTime” />

tween animation 资源定义的格式如下:

<?xml version=”1.0″ encoding=”utf-8″?>
android:interpolator=”@[package:]anim/interpolator_resource”
android:shareInterpolator=[ ” true ” false “>
android:fromAlpha=”float”
android:toAlpha=”float” />
android:fromXScale=”float”
android:toXScale=”float”
android:fromYScale=”float”
android:toYScale=”float”
android:pivotX=”float”
android:pivotY=”float” />
android:fromXDelta=”float”
android:toXDelta=”float”
android:fromYDelta=”float”
android:toYDelta=”float” />
android:fromDegrees=”float”
android:toDegrees=”float”
android:pivotX=”float”
android:pivotY=”float” />


为其它animation类型,,或其它的容器。

android:interpolator 为Interpolator资源ID,Interpolator定义了动画的变化速率,动画的各帧的显示可以加速,减速,重复显示。

android:shareInterpolator 如果想为中的各个子动画定义共享interpolator,shareInterpolator 则设为true.

定义Fade in ,Fade out 动画,其对应的Android类AlphaAnimation,参数由fromAlpha,toAlpha定义。

定义缩放动画,其对应的Android类为ScaleAnimation,参数由fromXScale,toXScale,fromYScale,toYScale,pivotX,pivotY定义,pivotX,pivotY定义了缩放时的中心。

定义平移动画,其对应的Android类为TranslateAnimation,参数由fromXDelta,toXDelta,fromYDelta,toYDelta定义。

定义选择动画,其对应的Android类RotateAnimation,参数由fromDegrees,toDegrees,pivotX,pivotY, pivotX,pivotY定义选择中心。

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退出时动画效果。

更多相关文章

  1. Android(安卓)RecyclerView 的点击事件
  2. Android的TextView与Html相结合的用法
  3. Android(安卓)自定义View基本用法
  4. Android(安卓)自定义实现switch开关按钮
  5. 关于Android(安卓)Settings中的八个问题
  6. 【起航计划 031】2015 起航计划 Android(安卓)APIDemo的魔鬼步伐
  7. 【自定义View系列】android的UI结构
  8. TextView文字横向自动滚动(跑马灯)
  9. Android(安卓)GIF图片显示

随机推荐

  1. Android 8.0 SystemUI 源码分析(一):图文并
  2. android上用C语言读取fb0实现截屏,并保存
  3. Android Eclipse关联 android API doc文
  4. android - AsyncTask的使用
  5. Android布局优化之Include(一)
  6. 浅入浅出 Android(安卓)安全:第六章 Andro
  7. android ContentProvider使用详解
  8. 这篇文章适合所有Android手机第一次买And
  9. 分别在Linux和Android中用C语言写系统日
  10. Mac OS X下用Eclipse浏览和编译Android源