gpt4 book ai didi

java - GestureDetector 不适用于我的 View

转载 作者:行者123 更新时间:2023-11-29 09:13:25 24 4
gpt4 key购买 nike

我一直在开发绘图应用程序,我需要通过 View 检测双击:

package com.nda.painter.library.views;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnDoubleTapListener;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;

import com.nda.painter.library.Painter;
import com.nda.painter.library.listeners.DrawingListener;

public class PainterView extends View implements
DrawingListener, OnTouchListener,
OnGestureListener, OnDoubleTapListener {

private GestureDetector detector;
private Context context;
private Painter painter;
private Bitmap bitmap;
private Paint bitmapPaint;
private Path path;
private Paint paint;

private float x;
private float y;

public PainterView(Context context, Painter painter) {

super(context);
this.context=context;
this.painter=painter;
//setClickable(true);
//setLongClickable(true);
//setOnTouchListener(this);
detector=new GestureDetector(context, this);
detector.setIsLongpressEnabled(true);
detector.setOnDoubleTapListener(this);

}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
}

public void setPainter(Painter painter) {
this.painter=painter;
}

@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
Log.e("event", "event");
return false;
}

@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub

}

@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}

@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
Log.e("event", "long");
painter.drawString(x,y,"123");
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean onDoubleTap(MotionEvent e) {
// TODO Auto-generated method stub
Log.e("event", "double");
return true;
}

@Override
public boolean onDoubleTapEvent(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
}

请不要看其他代码,只看 GestureDetector。它不起作用!我在日志中没有看到任何注释。请告诉我为什么。

最佳答案

试试这个:

     detector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
return true; // the magic is here
}

@Override
public boolean onDoubleTap(MotionEvent e) {
Ln.d("!!! onDoubleTap");
return super.onDoubleTap(e);
}

@Override
public boolean onDoubleTapEvent(MotionEvent e) {
Ln.d("!!! onDoubleTapEvent");
return super.onDoubleTapEvent(e);
}
});

setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return detector.onTouchEvent(motionEvent);
}
});

关于java - GestureDetector 不适用于我的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11065403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com