I want to implement a movable imageView while dragging it. Drag and drop works fine. But when I drag to the end, the imageView exits the screen. How can I make a movable image only inside the screen?
This is my OnTouch lettering:
public boolean onTouch(View view, MotionEvent event) { 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: if (lastAction == MotionEvent.ACTION_DOWN) Toast.makeText(DraggableView.this, "Clicked!", Toast.LENGTH_SHORT).show(); break; default: return false; } return true; }
and this is my layout. the layout contains scrollview and their child and the image I want to drag.
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="400dp" android:background="#ff0000" android:gravity="center" android:text="View 1" android:textColor="#000" android:textSize="100dp" /> <TextView android:layout_width="match_parent" android:layout_height="400dp" android:background="#00ff00" android:text="View 2" android:textColor="#000" android:textSize="100dp" /> </LinearLayout> </ScrollView> <ImageView android:id="@+id/draggable_view" android:layout_width="100dp" android:layout_height="100dp" android:layout_gravity="bottom|right" android:layout_marginBottom="20dp" android:layout_marginEnd="20dp" android:background="@drawable/icon" /> </FrameLayout>
android ontouchlistener drag
Amal Dev SI Apr 04 '16 at 12:29 2016-04-04 12:29
source share