最近由於有需求,所以花了一點時間研究如何使用動畫,
像是上面有點像是插入的動畫是怎麼做的呢?
原理其實很簡單,首先先找出兩個物體的位置,接著利用 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

沒有留言:
張貼留言