Как перетащить холст определенного элемента в макете - PullRequest
0 голосов
/ 04 июля 2018

В моем макете внутри FrameLayout есть чертежный вид. Когда я пытаюсь создать формы холста, они создаются, но мне нужно перетащить определенный элемент холста в другое место. Я вижу так много ссылок в этом перетаскивании с относительным расположением с изображениями, но нет решения с FrameLayout.

XML: -

<FrameLayout
    android:id="@+id/wholeFrameLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black">

    <com.editing.canvas.library.util.CustomImageView
        android:id="@+id/imgMainPlaceholder"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY" />

        <com.editing.canvas.library.views.DrawingView
            android:id="@+id/drawingViewAll"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

</FrameLayout>

Код: -

 FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(150, 150);
                mDrawingView.setLayoutParams(layoutParams);
                mDrawingView.setOnTouchListener(ShapeDrawingActivity.this);

Я использую приведенный выше код для перетаскивания, но у меня не получилось

  @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        final int X = (int) motionEvent.getRawX();
        final int Y = (int) motionEvent.getRawY();
        switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
                FrameLayout.LayoutParams lParams = (FrameLayout.LayoutParams) view.getLayoutParams();
                _xDelta = X - lParams.leftMargin;
                _yDelta = Y - lParams.topMargin;
                break;
            case MotionEvent.ACTION_UP:
                break;
            case MotionEvent.ACTION_POINTER_DOWN:
                break;
            case MotionEvent.ACTION_POINTER_UP:
                break;
            case MotionEvent.ACTION_MOVE:
                FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) view
                        .getLayoutParams();
                layoutParams.leftMargin = X - _xDelta;
                layoutParams.topMargin = Y - _yDelta;
                layoutParams.rightMargin = -250;
                layoutParams.bottomMargin = -250;
                view.setLayoutParams(layoutParams);
                break;
        }

        mRrootLayout.invalidate();
        return true;
    }

Предложения / образцы / ссылки, все будет оценено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...