2014-09-30 35 views
1

我已經在線性佈局中添加了一個view,我想在運行時按用戶推送它的方向移動view,因爲我在視圖上添加了onTouchListner,以及I定義了一個手勢檢測器。如何使用手勢檢測器和動畫來移動視圖

gestureDetectoronFling方法我已經開始翻譯動畫視圖上

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
float velocityY) { 

mX = e2.getX(); 
mY = e2.getY(); 

TranslateAnimation transA = new TranslateAnimation(
        e1.getX(),e2.getX(),e1.getY(),e2.getY()); 

transA.setDuration(1000); 
transA.setAnimationListener(MainActivity.this); 
mBtn.startAnimation(transA); 

return super.onFling(e1, e2, velocityX, velocityY); 
} 

翻譯動畫作品很好,但動畫視圖後保持原來的位置。要移動以目標位置我設置次數x & y屬性爲MX和我

@Override 
public void onAnimationEnd(Animation animation) { 
mBtn.setX(mX); 
mBtn.setY(mY); 
} 

但這不能正常工作。請幫助,如果有任何其他方式來實現這一點,請讓我知道。

回答

0

有一個按鈕在那裏移動嗎?我看到一個mBtn。請注意,視圖動畫只會轉換繪製視圖的位置,而不是實際位置(因此按鈕可點擊區域不會隨按鈕移動)。你可以嘗試做transA.setFillAfter(true),這應該阻止它回到原來的位置,但我相信可點擊區域將保持不變。因此,你應該嘗試做一個屬性動畫,因爲它會更新視圖的屬性,而不僅僅是它的繪製位置。做一個viewpropertyanimator可能是最簡單的,因爲你正在動畫x和y。你可以在這裏閱讀更多:http://developer.android.com/guide/topics/graphics/prop-animation.html