无法在我的类中获得实现OnTouchListener的触摸事件

时间:2014-02-15 16:46:01

标签: android touch

在Android中我想在相机视图上显示一些图像和信息。所以我创建了一个具有CameraPreview名称的类来在背景上显示相机并创建一个具有CanvasGenerator名称的类来绘制图像并在相机视图上写入信息。每个人认为工作正常,但我不能在课堂上得到触摸事件!我想在用户触摸屏幕时触摸事件,之后关闭此活动

我的代码:

public class AugmentedEye implements View.OnTouchListener {

    private Context context;
    private Activity activity;

    private CanvasGenerator augment;


    public AugmentedEye(Context cxt, Activity acy){
        context = cxt;
        activity = acy;
    }

    public void show(){
        CameraPreview eye = new CameraPreview(context);
        augment = new CanvasGenerator(context);

        activity.setContentView(eye);
        activity.addContentView(augment,
                new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT));

    }

    private void close(){
        augment.getValues();

        augment.off();
        activity.finish();
    }

    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        Log.d("trace", "touch happend"); // <---but it never comes here
        return false;
    }
}

我必须做些什么才能获得触摸事件?

1 个答案:

答案 0 :(得分:1)

因为OnTouchListener接口与View类相关联。在这里,您将实现它自定义类。请务必阅读documentation,如上所述

  

触摸事件时要调用的回调的接口定义   将被分派到此视图

实际上,onTouch事件只能发生在可触摸的对象或占用UI或屏幕上的某些空间。因为你的班级ArgumentEye不是View。因此,触摸事件无法在其上调用。

由于OnTouchListener是接口,如果在非视图类上实现它,它将不会抛出任何编译或运行时执行。