Android - 拖放 - 动画阴影到目的地

标签 android animation drag-and-drop

我想将 ShadowView 动画到某个坐标(到目标 View )。

我正在使用 D&D,如果用户放置 (DragEvent.ACTION_DROP),那么某个区域的 View 我想将 View (从放置位置)动画到某个目标 View 。

我不想从源位置为 View 设置动画,但想从 DROP 位置进行。

我尝试了很多东西,但没有任何效果。如何访问 ShadowView?这也不起作用:

EventDragShadowBuilder.getView()

我认为 TranslateAnimation 应该可以解决这个问题,但我需要在 D&D 期间访问“影子” View 。

图片:enter image description here

最佳答案

首先在 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/

相关文章:

javascript - 如果可拖动元素在可放置边界之前拖动,如何解决 jQuery UI 可放置错误,其中 over/out 不会触发

javascript - 使用jquery TableDnD插件拖放表格行如何使某些ros不可拖动并保存排序的行?

android - 在 Android 中拖放重叠的 ImageView

java - ORMLite dataType=DataType.SERIALIZABLE 不起作用

android - 以编程方式添加时左上角的 ConstraintLayout View

java - WebView android不允许全屏

android - 动画没有开始!! (安卓)

java - 从Socket读取数据的问题

html - 如何阻止文本在过渡中移动?

android - Chain animator设置android动画