【Android动画九章】-TranslateAnimation(位移动画)

上一节介绍了AlphaAnimation动画的用法,本节将介绍另一种形式的动画-TranslateAnimation(位移动画)。
public class
TranslateAnimation
extends Animation
java.lang.Object
↳ android.view.animation.Animation
↳ android.view.animation.TranslateAnimation
位移动画也是Animation类的子类,常用构造方法如下:
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)。有四个参数:
fromXDelta:起始X坐标
toXDelta: 结束X坐标
fromYDelta:起始Y坐标
toYDelta: 结束Y坐标
同样可以通过两种方式实现位移动画,通过实例进行演示。

代码方式实现

1.主布局文件:


<LinearLayout 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:orientation="vertical"
    tools:context="demo.androidwar.com.translatedemo.MainActivity">

    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:gravity="center"
        android:onClick="translate"
        android:text="位移动画"
        android:textSize="20sp" />

    <ImageView

        android:id="@+id/imgview"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@mipmap/ic_launcher" />

LinearLayout>

2.MainActivity.java:

package demo.androidwar.com.translatedemo;

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

public class MainActivity extends AppCompatActivity {
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.imgview);

    }

    public void translate(View view) {
        TranslateAnimation translateAnimation = new TranslateAnimation(0, 200, 0, 200);
        translateAnimation.setDuration(2000);
        imageView.setAnimation(translateAnimation);
        imageView.startAnimation(translateAnimation);
    }

}

构造方法传入了四个参数,分别是X轴起始值、X轴结束值、Y轴起始值和Y轴结束值,其余方法和上一节AlphaAnimation方法一样。运行项目如下:
【Android动画九章】-TranslateAnimation(位移动画)_第1张图片

引入xml的方式实现

1.xml文件代码如下:


<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="2000"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:repeatCount="3"
        android:toXDelta="0"
        android:toYDelta="100"
        />
set>

2.MainActivity.java:

package demo.androidwar.com.translatedemo;

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

public class MainActivity extends AppCompatActivity {
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.imgview);

    }

    public void translate(View view) {
        Animation translateAnimation = AnimationUtils.loadAnimation(MainActivity.this,R.anim.translation);
        imageView.setAnimation(translateAnimation);
        imageView.startAnimation(translateAnimation);
    }

}

运行项目如下:
【Android动画九章】-TranslateAnimation(位移动画)_第2张图片
这时你会发现,我们在文件中设置了fillafter属性,但是动画结束后并没有保持住状态,研究后发现,这个属性必须放置在set标签里才起作用,将xml文件代码修改如下:


<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true">
    <translate
        android:duration="2000"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:repeatCount="3"
        android:toXDelta="0"
        android:toYDelta="100" />
set>

再次运行实例:
【Android动画九章】-TranslateAnimation(位移动画)_第3张图片
这时动画结束后就停留下来了。

**喜欢的朋友请关注我,另欢迎阅读我的电子书
百度阅读:
http://yuedu.baidu.com/ebook/284b41a1e518964bce847c90?qq-pf-to=pcqq.c2c###
亚马逊:
http://www.amazon.cn/Android-%E7%99%BE%E6%88%98%E7%BB%8F%E5%85%B8-%E5%8D%B7I-%E5%BC%A0%E4%BA%9A%E8%BF%90/dp/B01ER5R9U2?ie=UTF8&keywords=Android%E7%BB%8F%E5%85%B8&qid=1461806976&ref_=sr_1_6&s=digital-text&sr=1-6**

你可能感兴趣的:(Android)