项目上要求对鼠标的点击事件进行监听,于是百度了一波,成功解决了问题,
实现方法,对要相应鼠标事件的控件设置 setOnGenericMotionListener 即可
我是在recyclerview 的adapter 的onbindviewholder里实现的
在鼠标左键按下的时候调用
如果想要早按键释放时调用,
改为event.getActionMasked() == MotionEvent.ACTION_BUTTON_RELEASE即可
viewHolder.itemView.setOnGenericMotionListener(new View.OnGenericMotionListener() { @Override public boolean onGenericMotion(View view, MotionEvent motionEvent) { //点击鼠标左键 if(motionEvent.getActionButton() == MotionEvent.BUTTON_PRIMARY && motionEvent.getActionMasked() == MotionEvent.ACTION_BUTTON_PRESS){ viewHolder.itemView.requestFocus();//请求焦点 mItemListener.onItemSelected(i);//切换view 的内容 } return true; } });
鼠标按键的值分别是:
switch (event.getActionButton()) {
case MotionEvent.BUTTON_PRIMARY:
Log.d("鼠标左键单击事件");
break;
case MotionEvent.BUTTON_SECONDARY:
Log.d("鼠标右键单击事件");
break;
case MotionEvent.BUTTON_TERTIARY:
Log.d("鼠标中键单击事件");
break;
case MotionEvent.BUTTON_FORWARD:
Log.d("鼠标前进键按下");