Android中不常见的监听: 鼠标划过/双击/右键
* 工作中经常接触 这些监听,分享出来,大家了解一下*
鼠标划过—- 实例 划过弹出 Dialog -tip提示
private class HoverListener implements OnHoverListener {
┊ @Override
┊ public boolean onHover(View useless, MotionEvent event){
┊ ┊ if (preventResponseHover()) {
┊ ┊ ┊ return false;
┊ ┊ }
┊ ┊ switch(event.getAction()) {
┊ ┊ ┊ case MotionEvent.ACTION_HOVER_ENTER:
┊ ┊ ┊ ┊ useless.setBackgroundResource(R.drawable.ic_background_mouse_hover);
┊ ┊ ┊ ┊ View view = ((LayoutInflater) mContext.getSystemService(
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ Context.LAYOUT_INFLATER_SERVICE))
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊.inflate(R.layout.status_bar_activity_hover_tips, null, false);
┊ ┊ ┊ ┊ TextView v = (TextView) view.findViewById(R.id.akv_tips);
┊ ┊ ┊ ┊ if (v != null) {
┊ ┊ ┊ ┊ ┊ v.setText(PackageManager.getTitleByPkg(getContext(), mActivity.mPkgName));
┊ ┊ ┊ ┊ }
┊ ┊ ┊ ┊ dismissDialog();
┊ ┊ ┊ ┊ showDialog(view, DIALOG_PADDING_TIPS);
┊ ┊ ┊ ┊ break;
┊ ┊ ┊ case MotionEvent.ACTION_HOVER_EXIT:
┊ ┊ ┊ ┊ useless.setBackgroundResource(R.drawable.system_bar_background);
┊ ┊ ┊ ┊ break;
┊ ┊ }
┊ ┊ return false;
┊ }
}
#### 双击
public boolean onTouchEvent(MotionEvent e) {
┊ int button = e.getButtonState();
┊ int action = e.getAction();
┊ if(button == MotionEvent.BUTTON_SECONDARY && action == MotionEvent.ACTION_DOWN) {// 右键
┊ ┊ dismissDialog();
┊ ┊ mShowRBM = true;
┊ ┊ showDialog(getRbmView(), 0);
┊ ┊ return true;
┊ }
┊ // Locked status to click
┊ if(action == MotionEvent.ACTION_DOWN) {//单击
┊ ┊ if(mActivity.mIsDocked) {
┊ ┊ ┊ if(!mActivity.mApkRun) {
┊ ┊ ┊ ┊ waitTimer();
┊ ┊ ┊ ┊ runApkByPkg();
┊ ┊ ┊ } else if(mActivity.mHiden) {
┊ ┊ ┊ ┊ resizeStack();
┊ ┊ ┊ }
┊ ┊ } else if(mActivity.mHiden) {
┊ ┊ ┊ resizeStack();
┊ ┊ }
┊ ┊ setFocusedStack();
┊ }
┊ return super.onTouchEvent(e);
}
双击
双击的实现则是通过,对单机的时间的控制,
但是由于手速和鼠标的不同,则时间设置一般不确定。。。。。。。。