[Android] ImageView をドラッグする

Android7

アイコン画像をドラッグしてごみ箱に入れるなどの、ドラッグをAndroidでやる場合にonTouchを使います。タッチした指の動きに合わせてlayoutメソッドを使い画像などを移動させ、あたかもドラッグしているようにできます。
 

testimagedrag1
testimagedrag2
Android Studio 2.2.2
Android 7.1.1

sponsored link

layout メソッドを使って画像を移動

 
Viewクラスのメソッドとしてlayoutというのがあり、これはViewの位置、サイズを指定できます。
 

 
これをImageViewに当てはめて画像を移動することを確認してみます。
ボタンタップで画像が移動させてみます。
 

 

 
image_layout_1
 
ボタンを押すたびに少しづつ画像が下に移動していきます。
尚、最初の位置は別途調整が必要です。
 
これを使って画像の移動ができるようになりました。
次は画像をタッチしたイベントを取得します。
 

onTouch

 
タッチイベントを扱うものとして
onTouch(View v, MotionEvent event)
があります

似たものとしては
onTouchEvent(MotionEvent motionEvent)

がありますが、これはActivityの画面全体でのタッチイベントを拾う時に使います

Activity にOnTouchListener を実装しますので必然的に
public boolean onTouch(View v, MotionEvent event) {}
の設定を求められます

一方onTouchは例えばImageViewにリスナーを設定します

実装するとこのようになります
MainActivity.java

 
activity_main.xml

 

logには画像をドラッグした座標が記録されています
logcat

 

関連: