android 双击 单击,Android屏幕单击和双击处理

public class RemoteDesktop extends Activity implements

OnGestureListener {

... ...

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

gestureScanner = new GestureDetector(this);

gestureScanner.setIsLongpressEnabled(true); // 手势必需

gestureScanner

.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener()

{

public boolean onDoubleTap(MotionEvent e) {

// 双击时产生一次

Mouse mouse = new Mouse();

mouse.setScreenWidth(screenWidth);

mouse.setScreenHeight(screenHeight);

mouse.setType(0x10);

mouse.setType2(4);

mouse.setX(x);

mouse.setY(y);

try {

objOutput.writeObject(mouse);

objOutput.reset();

} catch (Exception ex) {

ex.printStackTrace();

}

return true;

}

public boolean onDoubleTapEvent(MotionEvent e) {

// 双击时产生两次

return true;

}

public boolean onSingleTapConfirmed(MotionEvent e) {

// 短快的点击算一次单击

Mouse mouse = new Mouse();

mouse.setScreenWidth(screenWidth);

mouse.setScreenHeight(screenHeight);

mouse.setType(0x10);

mouse.setType2(3);

mouse.setX(x);

mouse.setY(y);

try {

objOutput.writeObject(mouse);

objOutput.reset();

} catch (Exception ex) {

ex.printStackTrace();

}

return true;

}

});

iv.setOnTouchListener(imageViewTouchListener);

... ...

}

... ...

private OnTouchListener imageViewTouchListener = new

OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

x = (int) event.getX();

y = (int) event.getY();

return gestureScanner.onTouchEvent(event);

}

... ...

};

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio 中,可以使用 `View.OnTouchListener` 接口来监听视图的触摸事件,然后根据触摸事件的类型来实现双击单击、触摸和滑动等效果。 以下是一个示例代码,演示了如何实现一个具有双击单击、触摸和滑动效果的按钮: ```java public class MyButton extends Button implements View.OnTouchListener { private static final long DOUBLE_CLICK_TIME_DELTA = 300; // 双击间隔时间阈值,单位毫秒 private long lastClickTime = 0; // 上一次单击的时间 private float startX = 0; // 触摸起始点的 x 坐标 private float startY = 0; // 触摸起始点的 y 坐标 public MyButton(Context context) { super(context); init(); } public MyButton(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MyButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } private void init() { setOnTouchListener(this); } @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // 记录触摸起始点的坐标 startX = event.getX(); startY = event.getY(); break; case MotionEvent.ACTION_UP: long clickTime = System.currentTimeMillis(); // 判断是否双击 if (clickTime - lastClickTime < DOUBLE_CLICK_TIME_DELTA) { onDoubleClick(); } // 判断是否单击 else if (Math.abs(event.getX() - startX) < 10 && Math.abs(event.getY() - startY) < 10) { onClick(); } lastClickTime = clickTime; break; case MotionEvent.ACTION_MOVE: // 判断是否滑动 if (Math.abs(event.getX() - startX) > 10 || Math.abs(event.getY() - startY) > 10) { onSwipe(); } break; case MotionEvent.ACTION_CANCEL: break; } return false; } private void onDoubleClick() { // 双击事件处理 Toast.makeText(getContext(), "Double Clicked", Toast.LENGTH_SHORT).show(); } private void onClick() { // 单击事件处理 Toast.makeText(getContext(), "Clicked", Toast.LENGTH_SHORT).show(); } private void onSwipe() { // 滑动事件处理 Toast.makeText(getContext(), "Swiped", Toast.LENGTH_SHORT).show(); } } ``` 在上面的代码中,`MyButton` 继承自 `Button`,并实现了 `View.OnTouchListener` 接口。在 `init()` 方法中,将 `MyButton` 的触摸事件监听器设置为 `this`,即 `MyButton` 自身。 在 `onTouch()` 方法中,根据触摸事件的类型来判断是双击单击、触摸还是滑动,并分别调用 `onDoubleClick()`、`onClick()`、`onSwipe()` 方法进行处理。其中,在判断是否双击单击时,使用 `lastClickTime` 来记录上一次单击的时间,以便计算两次单击之间的时间差。 最后,在各个事件处理方法中,可以根据需要进行相应的处理,例如弹出提示框、执行动画等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值