我想将 ShadowView
动画到某个坐标(到目标 View )。
我正在使用 D&D,如果用户放置 (DragEvent.ACTION_DROP
),那么某个区域的 View 我想将 View (从放置位置)动画到某个目标 View 。
我不想从源位置为 View 设置动画,但想从 DROP 位置进行。
我尝试了很多东西,但没有任何效果。如何访问 ShadowView
?这也不起作用:
EventDragShadowBuilder.getView()
我认为 TranslateAnimation
应该可以解决这个问题,但我需要在 D&D 期间访问“影子” View 。
最佳答案
首先在 View 上实现onTouchlistener
llDragable.setOnTouchListener(this);
使 View 可拖动
@Override
public boolean onTouch(View view, MotionEvent event) {
float dX = 0;
float dY = 0;
switch (view.getId()){
case R.id.dragableLayout :{
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
dX = view.getX() - event.getRawX();
dY = view.getY() - event.getRawY();
lastAction = MotionEvent.ACTION_DOWN;
break;
case MotionEvent.ACTION_MOVE:
view.setY(event.getRawY() + dY);
view.setX(event.getRawX() + dX);
lastAction = MotionEvent.ACTION_MOVE;
break;
case MotionEvent.ACTION_UP:
//Animate
animate();
if (lastAction == MotionEvent.ACTION_DOWN)
//Toast.makeText(DraggableView.this, "Clicked!", Toast.LENGTH_SHORT).show();
break;
default:
return false;
}
return true;
}
}
return false;
}
然后您可以在案例 MotionEvent.ACTION_UP 中使用对象动画师使用对象动画。你需要有目的地的位置。
private void animate() {
Path path = new Path();
path.moveTo(destinationX, destinationY);
path.lineTo(destinationX, destinationY);
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(mButton, View.X, View.Y, path);
objectAnimator.setDuration(duration);
objectAnimator.setInterpolator(new LinearInterpolator());
objectAnimator.start();
}
关于Android - 拖放 - 动画阴影到目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39999169/