屬性動畫Animator 、傳統動畫 Animation
傳統動畫: eg. 平移---
TranslateAnimation animation=new TA(0 ,200 ,0 ,0); //參數:初始/最終 的 X/Y座標
animation.setDuration( 1000); //延遲時間
animation.setFillAfter( true); //停在最終位置
ImageView iv=() fv~( ); //控件 初始化
iv.startAnimation(animation); //啓動
// 移動後,原點擊事件仍然在初始位置
屬性動畫:
public class AnimatorActivity extends Activity {
private ImageView main_iv;
private ImageView c_iv;
private ImageView d_iv;
private ImageView e_iv;
ObjectAnimator oa_3;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.animator);
init();
setAnimator();
}
private void setAnimator() { //設置動畫 --對象、屬性、X/Y絕對位置(起始、終止
//ObjectAnimator.ofFloat(main_iv,"translationX",0,200).setDuration(1000).start();
// PropertyValuesHolder pv1=PropertyValuesHolder.ofFloat("rotation",0,360f); //參數--屬性及其屬性值
// ObjectAnimator.ofPropertyValuesHolder(c_iv,pv1).setDuration(9000).start(); //對象、動畫
/**利用動畫集完成多個動畫*/
ObjectAnimator oa_1=new ObjectAnimator().ofFloat(main_iv,"translationY",0,100);
ObjectAnimator oa_2=new ObjectAnimator().ofFloat(c_iv,"translationX",0,200);
oa_3=new ObjectAnimator().ofFloat(d_iv,"translationX",230,30);
AnimatorSet set= new AnimatorSet();
//set.playTogether(oa_1,oa_2,oa_3); //動畫集,同時播放
set.play(oa_1).with(oa_2); //可對每一個進行控制
set.play(oa_3).after(oa_1);
set.setDuration(2300).start();
/**點擊事件*/
initListener();
}
private void initListener() {
oa_3.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
ObjectAnimator.ofFloat(e_iv,"rotation",0,360).setDuration(2300).start();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}
private void init() {
main_iv= (ImageView) findViewById(R.id.iv_main);
c_iv= (ImageView) findViewById(R.id.iv_c);
d_iv= (ImageView) findViewById(R.id.iv_d);
e_iv= (ImageView) findViewById(R.id.iv_e);
}
}public class MyAnimatorActivity extends Activity implements View.OnClickListener{
private int[] res={R.id.iv_main,R.id.iv_c,R.id.iv_d,R.id.iv_e};
private List list_iv=new ArrayList<>();
private boolean flag=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_animator);
init();
}
//實例化控件,並將其加入到List中,順便實現點擊事件
private void init() {
for(int i=0;i