본문으로 바로가기

Imageview에 TouchEvent적용

category ETC/Android 2020. 2. 9. 12:10

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;
            }
        });
    }
}