有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓在视图上移动手指时如何识别hoverview?

我是安卓新手,我想知道在不同的视图上移动手指时如何识别悬停视图。例如,如果我的活动有5个线性布局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;
    }

谢谢


共 (1) 个答案

  1. # 1 楼答案

    实现视图。在你的活动中找到你的听众

    获取物品触摸的矩形区域,如果触摸点位于该矩形区域内,则采取措施

        @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;
        }