项目上要求对鼠标的点击事件进行监听,于是百度了一波,成功解决了问题,
实现方法,对要相应鼠标事件的控件设置? ?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("鼠标前进键按下");
|