其他分享
首页 > 其他分享> > 手指移动视图时如何识别悬停视图?

手指移动视图时如何识别悬停视图?

作者:互联网

我是android的新手,我想知道当在不同的视图上移动手指时如何识别悬停视图.例如,如果我的活动有5个LinearLayouts A,B,C,D,E,并且如果我从C移到B,然后移到E,则我想识别它.如果有人知道如何实现,请给我一个例子.

到目前为止我尝试过的代码.

@Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_HOVER_ENTER) {
            switch (v.getId()) {
                case R.id.linearLayoutA:
                    Log.d(getClass().getSimpleName(), "entered A");
                    break;

                case R.id.linearLayoutB:
                    Log.d(getClass().getSimpleName(), "entered B");
                    break;

                case R.id.linearLayoutC:
                    Log.d(getClass().getSimpleName(), "entered c");
                    break;

                case R.id.linearLayoutD:
                    Log.d(getClass().getSimpleName(), "entered d");
                    break;

                case R.id.linearLayoutE:
                    Log.d(getClass().getSimpleName(), "entered e");
                    break;
            }
        } 
        return true;
    }

谢谢.

解决方法:

在您的活动中实现View.OnTouchListener

获取项目触摸的矩形区域,然后如果触摸点在该矩形区域内,则执行某项操作…

    @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            super.onWindowFocusChanged(hasFocus);
            rect1 = new Rect(linearLayout1.getLeft(), linearLayout1.getTop(),
                    linearLayout1.getRight(), linearLayout1.getBottom());

            rect2= new Rect(linearLayout2.getLeft(), linearLayout2.getTop(),
                    linearLayout2.getRight(), linearLayout2.getBottom());
        }

/////////////////////////////

@Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getActionMasked() == (MotionEvent.ACTION_DOWN|MotionEvent.ACTION_MOVE)) {
            if (rect1.contains((int) event.getX(), (int) event.getY())) {
                //do something when touch or moving on linearlayout1 area
            } else if (rect2.contains((int) event.getX(), (int) event.getY())) {
                //do something when touch or moving on linearlayout2 area
            }
        }
        return true;
    }

标签:android,ontouchlistener
来源: https://codeday.me/bug/20191013/1908105.html