Я разрабатываю floatie, аналогичный chatHead в facebook или floatie в OneNote.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, который добавляется к экрану с помощью среднего WindowManager.
Когда принимается MotionEvent.ACTION_UP, я хочу, чтобы значок плавно возвращался к левому краю экрана.
Визуально, когда я перетаскиваю значок, а затем отпустите палец, значок остается в том же положении. Когда я снова касаюсь его, значок появляется быстро на левом краю, что является очевидной причиной «params.x = initialX;» инструкция.
Любая помощь, пожалуйста? Спасибо Jaime
У меня также есть решение с Animators вместо MoveAnimator, если вы хотите. – tim