【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.主布局文件:

<?xml version="1.0" encoding="utf-8"?>
<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文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<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文件代码修改如下:

<?xml version="1.0" encoding="utf-8"?>
<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,动画)