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