В моем макете внутри 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;
}
Предложения / образцы / ссылки, все будет оценено.