简体   繁体   English

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

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

I have a button following my finger position when I touch it but if I put my finger on screen edges, The button will be outside of the screen, How can I check if the button is outside the screen or no because I don't want the button leaves the screen.当我触摸它时,我的手指 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;
}

check out how to measure whole screen查看如何测量整个屏幕

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

then value set for setX method can't be higher than touch position + width of dragged view, setY can't be higher than touch position + height of dragged view那么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.

相关问题 打开键盘后如何用键盘移动按钮 - How can I move button with keyboard when keyboard is opened 如何在屏幕上以编程方式移动项目? - How can i move items programmatically on the screen? 当我转到其他活动时,如何保持变量停止静止? - how can I can keep my variable stop resting when i move to a different activity? 键入文本时按钮大小发生变化,我该如何停止? - Button size change when typing text, how can I stop that? 当按下后退按钮时,如何停止android中的asynctask? - How can I stop asynctask in android when back button is pressed? 按下主屏幕按钮后如何停止Android中的声音 - How can I stop sound in Android when home button is pressed 如何按住浮动按钮并将其移动到Android屏幕上的任何位置? - How can i hold the floating button and move it to any place on the screen in android? 按住按钮时,如何使图像视图在屏幕上连续移动? - How do I get an image view to continually move across the screen when a button is held down? 如何允许遥控器将焦点从键盘移动到屏幕上的按钮? - How can I allow a remote to move focus from keyboard to button on the screen? 如何使用按钮阻止屏幕滑动(viewpager) - How can I stop the screen from being able to slide (viewpager) with a button
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM