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