以下の XML で指定されているように、linear_layout_mouse をドラッグしようとしています。レイアウトで指定された中央ボタンを使用してレイアウト全体をドラッグしたい。レイアウトをドラッグすることはできますが、ドロップするとレイアウトが消えてしまいます。logcat で、ドロップすると、「Reporting drop result: false」というログが表示されます。これには DragShadowBuilder を使用しました。
Can anyone help me out to fix this problem.?
Code:
// On touch listener
oMiddleButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(mouseLayout);
mouseLayout.startDrag(null, shadowBuilder, mouseLayout, 0);
mouseLayout.setVisibility(View.INVISIBLE);
return true;
}
else
{
return false;
}
}
});
oMiddleButton.setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
// TODO Auto-generated method stub
int action = event.getAction();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
System.out.println("Drag event started");
break;
case DragEvent.ACTION_DRAG_ENTERED:
System.out.println("Drag event entered into "+mouseLayout.toString());
break;
case DragEvent.ACTION_DRAG_EXITED:
System.out.println("Drag event exited from "+mouseLayout.toString());
break;
case DragEvent.ACTION_DROP:
System.out.println("Dropped");
View view = (View) event.getLocalState();
ViewGroup owner = (ViewGroup) view.getParent();
owner.removeView(view);
RelativeLayout container = (RelativeLayout) findViewById(R.id.relative_layout_shared_screen);
container.removeView(view);
container.addView(mouseLayout);
mouseLayout.setVisibility(View.VISIBLE);
break;
case DragEvent.ACTION_DRAG_ENDED:
System.out.println("Drag ended");
break;
case DragEvent.ACTION_DRAG_LOCATION:
mouseLayout.setVisibility(View.VISIBLE);
break;
default:
break;
}
return true;
}
});
// XML レイアウト ファイル
<RelativeLayout
android:id="@+id/relative_layout_shared_screen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<ImageView
android:id="@+id/image_shared_screen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/temp" />
<LinearLayout
android:id="@+id/linear_layout_mouse"
android:layout_width="99dp"
android:layout_height="60dp"
android:orientation="horizontal"
android:layout_centerInParent="true"
android:visibility="gone"
android:background="@drawable/mouse_controller" >
<LinearLayout
android:id="@+id/left_panel_container"
android:layout_width="33dp"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/left_top_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="33dp"
android:gravity="center"
android:background="#07000000"/>
<Button
android:id="@+id/left_bottom_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="27dp"
android:gravity="center"
android:background="#07000000"/>
</LinearLayout>
<LinearLayout
android:id="@+id/middle_panel_container"
android:layout_width="33dp"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/middle_top_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="27dp"
android:background="#07000000"/>
<Button
android:id="@+id/middle_middle_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="9dp"
android:background="#07000000"/>
<Button
android:id="@+id/middle_bottom_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="25dp"
android:background="#07000000"/>
</LinearLayout>
<LinearLayout
android:id="@+id/right_panel_container"
android:layout_width="33dp"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/right_top_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="33dp"
android:background="#07000000"/>
<Button
android:id="@+id/right_bottom_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="match_parent"
android:layout_height="27dp"
android:background="#07000000"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>