Android 一般动画animation和属性动画animator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.example.animation;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     
    }
     
    public void click(View view){
        Toast.makeText(this, "click", Toast.LENGTH_SHORT).show();
    }
     
    public void move(View view ){
        float fromXDelta=0;
        float toXDelta=0;
        float fromYDelta=0;
        float toYDelta=200;
        TranslateAnimation animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta);
        /**
         * time
         */
        animation.setDuration(1000);
        animation.setFillAfter(true);
        ImageView imageView=(ImageView)findViewById(R.id.imageView);
        imageView.startAnimation(animation);
    }
      
}

这是一般动画,再看属性动画

区别:一般动画变换后只是图片移动了,view的位置不变,然而属性动画view随着图片移动。

 

1
2
3
4
5
public void move(View view ){
 
    ImageView imageView=(ImageView)findViewById(R.id.imageView);
    ObjectAnimator.ofFloat(imageView, "translationY", 0f,200f).setDuration(1000).start();
}


多种动画同时进行

 

 

1
2
3
4
5
6
7
public void move(View view ){
 
    ImageView imageView=(ImageView)findViewById(R.id.imageView);
    ObjectAnimator.ofFloat(imageView, "translationY", 0f,200f).setDuration(1000).start();
    ObjectAnimator.ofFloat(imageView, "translationX", 0f,200f).setDuration(1000).start();
    ObjectAnimator.ofFloat(imageView, "rotation", 0,360f).setDuration(1000).start();
}

Google提供了一种更节省系统资源的多种动画同时播放

 

 

1
2
3
4
5
6
7
8
9
public void move(View view ){
 
    ImageView imageView=(ImageView)findViewById(R.id.imageView);
 
    PropertyValuesHolder p1=PropertyValuesHolder.ofFloat("rotation", 0,360f);
    PropertyValuesHolder p2=PropertyValuesHolder.ofFloat("translationX", 0f,200f);
    PropertyValuesHolder p3=PropertyValuesHolder.ofFloat("translationY", 0f,200f);
    ObjectAnimator.ofPropertyValuesHolder(imageView, p1,p2,p3).setDuration(1000).start();
}

同时Google提供了animatorset,允许多种不同动画按照用户要求播放,如使用set.palyTpgether() set.playSequentially()

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void move(View view ){
 
    ImageView imageView=(ImageView)findViewById(R.id.imageView);
 
 
    ObjectAnimator animator1=ObjectAnimator.ofFloat(imageView, "rotation", 0,360f);
    ObjectAnimator animator2=ObjectAnimator.ofFloat(imageView, "translationX", 0,200f);
    ObjectAnimator animator3=ObjectAnimator.ofFloat(imageView, "translationY", 0,200f);
 
    AnimatorSet set=new AnimatorSet();
    //set.playTogether(animator1,animator2,animator3);
    set.playSequentially(animator1,animator2,animator3);
    set.setDuration(1000);
    set.start();
}
 

结伴旅游,一个免费的交友网站:www.jieberu.com

推推族,免费得门票,游景区:www.tuituizu.com

posted @ 2015-01-29 15:35  回忆安在  阅读(278)  评论(0编辑  收藏  举报