在视图上同时应用 Fling 和 ACTION_MOVE
Apply both Fling and ACTION_MOVE on view
通过在 OnTouchListener
.
中覆盖 onTouch
可以轻松应用运动事件
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
paramsF.x = initialX + (int)(event.getRawX() - initialTouchX);
paramsF.y = initialY + (int)(event.getRawY() - initialTouchY);
wm.updateViewLayout(view, paramsF);
break;
}
return false;
}
但是要应用 fling,我必须实施 GestureDectector
。
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
如何同时实现 fling 和 ACTION_MOVE
。
在 MotionEvent.ACTION_MOVE
之后使用 GestureDectector
即可。
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
initialX = paramsF.x;
initialY = paramsF.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_MOVE:
paramsF.x = initialX + (int)(event.getRawX() - initialTouchX);
paramsF.y = initialY + (int)(event.getRawY() - initialTouchY);
mWindowManager.updateViewLayout(v, paramsF);
break;
}
return gestureDetector.onTouchEvent(event);
}
通过在 OnTouchListener
.
onTouch
可以轻松应用运动事件
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
paramsF.x = initialX + (int)(event.getRawX() - initialTouchX);
paramsF.y = initialY + (int)(event.getRawY() - initialTouchY);
wm.updateViewLayout(view, paramsF);
break;
}
return false;
}
但是要应用 fling,我必须实施 GestureDectector
。
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
如何同时实现 fling 和 ACTION_MOVE
。
在 MotionEvent.ACTION_MOVE
之后使用 GestureDectector
即可。
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
initialX = paramsF.x;
initialY = paramsF.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_MOVE:
paramsF.x = initialX + (int)(event.getRawX() - initialTouchX);
paramsF.y = initialY + (int)(event.getRawY() - initialTouchY);
mWindowManager.updateViewLayout(v, paramsF);
break;
}
return gestureDetector.onTouchEvent(event);
}