onTouchListener는 getAction을 통해서 MotionEvent값을 가져올수 있다.
MotionEvent.ACTION_UP : 눌렀을떄
MotionEvent.ACTION_MOVE : 누르고 움직일떄
MotionEvent.ACTION_DOWN : 눌렀다 떘을때
getX()는 뷰에서 터치지점,
getRawX()는 실제 화면에서의 터치지점
따라서 이미지뷰에서 터치리스터를 등록할떄는 getRawX()를 사용해야 작동이 되더라
public class Main extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageView iv = (ImageView)findViewById(R.id.imageView);
LinearLayout ll = (LinearLayout)findViewById(R.id.ll);
iv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
iv.setX(event.getRawX()-iv.getWidth()/2);
iv.setY(event.getRawY()-iv.getHeight()/2);
}
return true;
}
});
}
}