WindowManager의 params의 x,y를 바꾸고 updateViewLayout 매서드를 불렀다.
그런데 뷰가 옮겨지긴 하는데 덜덜덜 떨리면서 되는 문제가 생겼다.
해결법
getX()대신 getRawX()를 사용한다. 왜냐하면, getX()는 onTouchListener가 달린 Layout을 기준으로 계산된 좌표가 나오고(내부 레이아웃) getRawX()는 화면 전체에서 터치가 일어난 좌표가 나오기 때문이다.
code
pmTransLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Utils.logd("Touch : "+event.getAction()); if(event.getAction() == MotionEvent.ACTION_DOWN) { pmInitDownX = pmWParams.x; pmInitDownY = pmWParams.y; pmInitDownRawX = event.getRawX(); pmInitDownRawY = event.getRawY(); } else if(event.getAction() == MotionEvent.ACTION_MOVE) { Utils.logd("[X,Y]] "+event.getX()+" "+event.getY()); pmWParams.x = pmInitDownX + (int)(event.getRawX() - pmInitDownRawX); pmWParams.y = pmInitDownY + (int)(event.getRawY() - pmInitDownRawY); pmWManager.updateViewLayout(pmMainLayout, pmWParams); } else if(event.getAction() == MotionEvent.ACTION_UP) { } return true; } });
'소프트웨어 > Android/Java/Ndk' 카테고리의 다른 글
Android] sms 읽기(문자 이벤트) (0) | 2016.06.14 |
---|---|
Android] BroadcastReceiver 등록 (0) | 2016.06.14 |
android] WebView 안멈춤 현상, WebView 계속 소리남 (0) | 2016.02.18 |
android] chat head (0) | 2016.02.13 |
android] YouTubePlayer 객체가 파괴되는듯하다.. (0) | 2016.02.11 |
android] YouTube developer (0) | 2016.02.10 |
TcpServer] Java Shutdown Hook (0) | 2015.11.02 |