0
私は、ツールバー、ボトムメニュー(図と似ています)、および画面の右下にあるドラッグ可能なrelativeLayoutからなるアクティビティを幅と高さ= 500dpで持っています。ビューのスムーズドラッグ
次のように私はそのrelativeLayoutにドラッグを実装している:
public void touchListenerPip(RelativeLayout relativeLayoutPIP) {
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
float screenHeight = displayMetrics.heightPixels;
float screenWidth = displayMetrics.widthPixels;
relativeLayoutPIP.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
float newX, newY;
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
dX = view.getX() - event.getRawX();
dY = view.getY() - event.getRawY();
lastAction = MotionEvent.ACTION_DOWN;
break;
case MotionEvent.ACTION_MOVE:
newX = event.getRawX() + dX;
newY = event.getRawY() + dY;
if ((newX <= 0 || newX >= screenWidth - view.getWidth()) || (newY <= 0 || newY >= screenHeight - view.getHeight())) {
lastAction = MotionEvent.ACTION_MOVE;
break;
}
//to block the view being dragged out of toolbar
if (newY < (float) toolbar.getHeight()) {
lastAction = MotionEvent.ACTION_MOVE;
break;
}
//to block the view being dragged out of bottombar
if (event.getRawY() + (float) view.getHeight() > screenHeight - (float) bottomBar.getHeight()) {
lastAction = MotionEvent.ACTION_MOVE;
break;
}
view.setX(newX);
view.setY(newY);
lastAction = MotionEvent.ACTION_MOVE;
break;
case MotionEvent.ACTION_UP:
if (lastAction == MotionEvent.ACTION_DOWN)
break;
default:
return false;
}
return true;
}
});
}
ビューが細かいドラッグしていると、ドラッグが滑らかではありません。ビューの円滑なドラッグのための任意の提案?
でのクリックを行うことができ)。 –