繁体   English   中英

移动按钮时如何停止使按钮离开屏幕?

[英]How can I stop making the button leaves the screen when I move it?

当我触摸它时,我的手指 position 后面有一个按钮,但是如果我将手指放在屏幕边缘,按钮将在屏幕之外,我如何检查按钮是否在屏幕之外,因为我不想要按钮离开屏幕。

@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View view, MotionEvent event) {
    if (view.getId() == R.id.img_view) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            dX = view.getX() - event.getRawX();
            dY = view.getY() - event.getRawY();
        } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
            view.setX(event.getRawX() + dX);
            view.setY(event.getRawY() + dY);
        }
    }
    return true;
}

查看如何测量整个屏幕

 DisplayMetrics displayMetrics = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
 int scrHeight = displayMetrics.heightPixels;
 int scrWidth = displayMetrics.widthPixels;

那么setX方法设置的值不能高于 touch position + 拖动视图的宽度, setY不能高于 touch position + 拖动视图的高度

int xToSet = event.getRawX() + dX;
if (xToSet + draggedView.getMeasuredWidth() > scrWidth) 
    xToSet = scrWidth - draggedView.getMeasuredWidth();
view.setX(xToSet);


int yToSet = event.getRawY() + dY;
if (yToSet + draggedView.getMeasuredHeight() > scrHeight) 
    yToSet = scrHeight - draggedView.getMeasuredHeight();
view.setY(yToSet);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM