我正在開發一個floatie,類似於Facebook中的chatHead或OneNote中的floatie。TranslateAnimation移動視圖,但沒有動畫
一旦我創建了它,我需要能夠通過觸摸圖標來移動它,但是當我停止拖動並鬆開手指時,我希望圖標返回到屏幕的左邊緣。
通過使用TranslateAnimation它的工作原理,但沒有動畫。當我再次觸摸圖標時,圖標出現在左邊緣。
這是相關的代碼:
trackerHead.setOnTouchListener(new View.OnTouchListener() {
private int initialX;
private int initialY;
private float initialTouchX;
private float initialTouchY;
@Override public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
initialX = params.x;
initialY = params.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
return true;
case MotionEvent.ACTION_UP:
TranslateAnimation animation = new TranslateAnimation(
TranslateAnimation.ABSOLUTE, params.x,
TranslateAnimation.ABSOLUTE, initialX,
TranslateAnimation.ABSOLUTE, params.y,
TranslateAnimation.ABSOLUTE, params.y);
animation.setDuration(4000);
animation.setRepeatCount(1);
animation.setInterpolator(new AccelerateInterpolator());
trackerHead.startAnimation(animation);
params.x = initialX;
return true;
case MotionEvent.ACTION_MOVE:
params.x = initialX + (int) (event.getRawX() - initialTouchX);
params.y = initialY + (int) (event.getRawY() - initialTouchY);
windowManager.updateViewLayout(trackerHead, params);
return true;
}
return false;
}
});
其中trackerHead是受窗口管理的平均值添加到屏幕的ImageView的。
當收到MotionEvent.ACTION_UP時,我希望圖標平滑地返回到屏幕的左邊緣。
可見,當我拖動圖標,然後釋放手指時,圖標仍保持在同一位置。當我再次觸摸它時,圖標在左邊顯示得很快,這顯然是「params.x = initialX;」的原因指令。
請幫忙嗎? 謝謝 Jaime
如果需要,我還可以使用Animators而不是MoveAnimator。 – tim