在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;
}
}
我必须做些什么才能获得触摸事件?
答案 0 :(得分:1)
因为OnTouchListener接口与View类相关联。在这里,您将实现它自定义类。请务必阅读documentation,如上所述
触摸事件时要调用的回调的接口定义 将被分派到此视图。
实际上,onTouch事件只能发生在可触摸的对象或占用UI或屏幕上的某些空间。因为你的班级ArgumentEye不是View。因此,触摸事件无法在其上调用。
由于OnTouchListener是接口,如果在非视图类上实现它,它将不会抛出任何编译或运行时执行。