2014年5月13日 星期二

Android 開發 (四十五) 簡單的動畫使用,insert


最近由於有需求,所以花了一點時間研究如何使用動畫,
像是上面有點像是插入的動畫是怎麼做的呢?
原理其實很簡單,首先先找出兩個物體的位置,接著利用 move animation 以及 scale animation就可以完成。

動畫的範例程式碼如下

public class AnimationHelper {
 private int[] startPosition = new int[2];
 private int[] endPosition = new int[2];
 public void moveView(View view1 , View view2,AnimationListener listener) {

  startPosition = getPostion(view1);
  endPosition = getPostion(view2);

  AnimationSet bringToLeftFromTopAnimationSet = new AnimationSet(true);
  Animation translateAnimation = new TranslateAnimation(0,
    endPosition[0]-startPosition[0], 0, endPosition[1]-startPosition[1]);
  translateAnimation.setDuration(1000);
  float from = 1;

  ScaleAnimation scaleAnimation = new ScaleAnimation(from,
    0, from,0);
  scaleAnimation.setDuration(1000);
  bringToLeftFromTopAnimationSet.addAnimation(scaleAnimation);
  bringToLeftFromTopAnimationSet.addAnimation(translateAnimation);
  bringToLeftFromTopAnimationSet.setAnimationListener(listener);
  view1.startAnimation(bringToLeftFromTopAnimationSet);
 }

 private int[] getPostion(View view){
  int[] position = new int[2]; 
  view.getLocationOnScreen(position);
  Log.d("Ted", "L "+ String.valueOf(position[0]));
  Log.d("Ted", "T "+String.valueOf(position[1]));
  return position;
 }
 
}

我寫了一個簡單的helper,使用方式很簡單只需要如下設置即可,

AnimationHelper helper = new AnimationHelper();
    helper.moveView(btn1,btn2,PlaceholderFragment.this);


小結

適當的動畫可以提升使用者經驗,但是動畫也需要花額外的時間才能完成,如何在設計與開發時間之間取得平衡,我想也是在開發專案時必須考量的,當然.....要刻一些有的沒的動畫,RD也要夠強才行 XDDD

沒有留言:

張貼留言