android - 检测您的手指在 Android 中滑过哪个 View

标签 android view detection

虽然相似questions过去曾被问过,他们似乎并没有真正得到回答,这可能是由于对所问内容的混淆。

简而言之,我想检测当您的手指在屏幕上滑动时正在进入哪个 View 。最好的例子就是任何安卓手机上的软键盘。当您按下任意键时,它会弹出一个窗口,告诉您手指下的字母是什么。如果您现在用一个手势将手指移到键盘上,当您移过字母表中的各个字母时,会弹出各个字母。

此类行为使用哪些监听器。我已经尝试过 OnTouchListeners,但它们似乎只有在您“触摸”按钮而不是“手指经过”它们时才会出现

Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {doStuff();}
});

button.setOnTouchListener(new OnTouchListener() {
  @Override
  public boolean onTouch(View v, MotionEvent event) {
      doStuff();
      return false;
  }
});

OnFocusChangeListener 也无济于事。

最佳答案

  • 创建布局
  • 将 View 添加到您的布局
  • 将 setOnTouchListener 设置为您的布局
  • 使用以下代码覆盖 onTouch 方法:

    public boolean onTouch(View v, MotionEvent event) 
    {
       LinearLayout layout = (LinearLayout)v;
    
        for(int i =0; i< layout.getChildCount(); i++)
        {
    
            View view = layout.getChildAt(i);
            Rect outRect = new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
            if(outRect.contains((int)event.getX(), (int)event.getY()))
            {
                                 // over a View
            }
        }
    }
    

关于android - 检测您的手指在 Android 中滑过哪个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4838609/

相关文章:

java - 在android中将字节数组转换为Base64字符串

android - 尝试从 Firebase 显示 ListView 时出现 java.lang.ArrayIndexOutOfBoundsException 错误

c# - 如何使用 Entity Framework 测试 View ?

Android - RecyclerView 和缩放图像

java - Hibernate——将具有单个值的 View 映射到只读字段

usb - 从网络浏览器中检测和访问 USB 设备 - 即使用插件

opencv - 使用 OpenCV 进行纸牌检测 - 在移动设备上

android - 应用程序终止后 getArguments() 上的 ClassCastException

java - 日志记录在 Android 设备上的实际作用是什么?

C++ SFML 不同类之间的碰撞检测