TranslateAnimation(平移动画)的意思无非就是一张图片或其他从一个位置到达另外一个位置。直接代码分析,相关重要属性参数解释都在代码中。

1、首先编写main.xml文件。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

  <ImageView
    android:id="@+id/image"
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/car_one1"/>

</RelativeLayout>

2、接下来编写MainActivity.java文件。

package com.example.dell.bitmapproject;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
  private ImageView image;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    image =(ImageView)findViewById(R.id.image);
    image.setOnClickListener(new OnClickListenerImpl());
  }
  private class OnClickListenerImpl implements View.OnClickListener {
    @Override
    public void onClick(View v) {
      /*
        AnimationSet相当于一个动画的集合,true表示使用Animation的interpolator
        false则是使用自己的。
        Interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果
        accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。
       */

      AnimationSet animationSet = new AnimationSet(true);
      /*
          Animation还有几个方法
          setFillAfter(boolean fillAfter)
          如果fillAfter的值为真的话,动画结束后,控件停留在执行后的状态
          setFillBefore(boolean fillBefore)
          如果fillBefore的值为真的话,动画结束后,控件停留在动画开始的状态
          setStartOffset(long startOffset)
          设置动画控件执行动画之前等待的时间
          setRepeatCount(int repeatCount)
          设置动画重复执行的次数
       */
      TranslateAnimation translateAnimation = new TranslateAnimation(
          //X轴初始位置
          Animation.RELATIVE_TO_SELF, 0.0f,
          //X轴移动的结束位置
          Animation.RELATIVE_TO_SELF,0.5f,
          //y轴开始位置
          Animation.RELATIVE_TO_SELF,0.0f,
          //y轴移动后的结束位置
          Animation.RELATIVE_TO_SELF,1.5f);

      //3秒完成动画
      translateAnimation.setDuration(2000);
      //如果fillAfter的值为真的话,动画结束后,控件停留在执行后的状态
      animationSet.setFillAfter(true);
      //将AlphaAnimation这个已经设置好的动画添加到 AnimationSet中
      animationSet.addAnimation(translateAnimation);
      //启动动画
      MainActivity.this.image.startAnimation(animationSet);

    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

02-02 09:46