在我的布局中,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;
}
建议/示例/链接将不胜感激。