补间动画是指定开始和结束的图像状态,自动生成需要显示的过度图像的动画。补间动画又分为四种:移动,缩放,旋转,通明度。下面以移动补间动画来做简单说明,效果是把一个ImageView从左上角,向右下方向移动,然后返回到起始点,中间对动画状态进行监听,效果如图:


下面简述其主要步骤:

1、定义动画文件:

    <translate xmlns:android="http://schemas.android.com/apk/res/android"          android:duration="5000"          android:fromXDelta="0"          android:fromYDelta="0"          android:interpolator="@android:anim/accelerate_decelerate_interpolator"          android:toXDelta="200"          android:toYDelta="300" />  

说明:

  • android:interpolator:动画渲染器,有三种渲染器可以设 置:accelerate_decelerate_interpolator,accelerate_interpolator,decelerate_interpolator, 它们分别对应的效果是:开始加速中间减速,一直加速,一直减速。
  • fromXDelta;动画起始位置的X坐标;
  • fromYDelta:动画起始位置的Y坐标;
  • toXDelta:动画结束位置的X坐标;
  • toYDelta:动画结束位置的Y坐标;
  • duration:动画持续时间,单位毫秒。

2、加载并启动动画:

import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.view.animation.Animation.AnimationListener;import android.widget.ImageView;public class TranslateActivity extends Activity implements AnimationListener {private static final String TAG = "Translate";private ImageView imageView;private Animation translateAnimation;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                imageView = (ImageView) findViewById(R.id.imageView1);                // 装载动画文件        translateAnimation = AnimationUtils.loadAnimation(this, R.xml.translate);                // 设置动画监听器        translateAnimation.setAnimationListener(this);                // 设置重复次数        translateAnimation.setRepeatCount(1);                // 设置重复模式        translateAnimation.setRepeatMode(Animation.REVERSE);                // 启动动画//        imageView.setAnimation(translateAnimation);//        translateAnimation.start();                imageView.startAnimation(translateAnimation);            }@Overridepublic void onAnimationEnd(Animation animation) {Log.i(TAG, "onAnimationEnd");}@Overridepublic void onAnimationRepeat(Animation animation) {Log.i(TAG, "onAnimationRepeat");}@Overridepublic void onAnimationStart(Animation animation) {Log.i(TAG, "onAnimationStart");}}

修改上面的某些代码,猜想效果,并和实际效果作对比,有时会发现很有趣的现象!:)

缩放动画的XML示例代码:

<set xmlns:android="http://schemas.android.com/apk/res/android"    android:shareInterpolator="false" >    <scale        android:duration="500"        android:fromXScale="1"        android:fromYScale="0.1"        android:pivotX="50%"        android:pivotY="50%"        android:startOffset="100"        android:toXScale="1"        android:toYScale="1.0" /></set>

旋转动画的XML示例代码如下:

<rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="10000"    android:fromDegrees="0"    android:interpolator="@anim/linear_interpolator"    android:pivotX="200%"    android:pivotY="300%"    android:repeatCount="infinite"    android:repeatMode="restart"    android:toDegrees="360" />

3、多说一句:

使用代码同样可以实现从XML加载动画一样的效果,有兴趣的话,可以试试看!:)

更多相关文章

  1. Android中 Lottie库初步实践与应用场景分析
  2. Android(安卓)闪电效果 (Electric Screen,电动屏幕)
  3. Android(安卓)动画框架详解,第 1 部分
  4. Android中Ringtone播放详解【安卓源码解析####】
  5. 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用
  6. android图形系统详解:View layer
  7. android 自定义view之侧滑效果
  8. Android实现一键清除输入内容和震动效果的EditText
  9. 处女男学Android(七)---Android(安卓)应用资源之StateListDrawable

随机推荐

  1. Android Animation初步
  2. UML详解:解析Android消息处理机制:Handler/
  3. android生命周期神器--Lifecycle
  4. 微信转发度最高的十大Android文章
  5. 第一章 Adnroid体系与系统架构
  6. android 使用JavaMail发送邮件
  7. 【Error】MPermissions引入错误 android-
  8. 【Android】第21章 2D图形和动画
  9. ToolBar 去掉默认左间距
  10. Android 下拉框第三方控件 NiceSpinner