【发布时间】:2019-11-06 14:45:25
【问题描述】:
我有一个绘制操纵杆视图的表面视图。该视图是一个自定义视图,它有一个 ontouchevent 并且 ontouch 事件没有被调用。为什么?这是代码...
表面视图:
public class GameView extends SurfaceView implements Runnable {
public void draw() {
if (ourHolder.getSurface().isValid()) {
canvas = ourHolder.lockCanvas();
//some code
joystickOnScreen.layout(10, (int)(sh*0.8f), (int)(sh*0.2f), (int)(sh*1f));
canvas.save();
joystickOnScreen.draw(canvas);
canvas.restore();
//some code
ourHolder.unlockCanvasAndPost(canvas);
}
}
}
操纵杆视图:
public class Joystick extends View {
public Joystick(Context context) {
super(context);
setFocusable(true);
setClickable(true);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
//some code
}
}
【问题讨论】:
-
我认为您需要将视图设置为可点击?
-
@IanMedeiros 我已经尝试过使用 setFocusable(true);也用 setClickable(true),不起作用
-
GameView 是否收到 onTouchEvents ?它可以消耗它吗?
-
@IanMedeiros 如果我实现 ontouchevent 是的,但我不想在那里接收事件,我想在操纵杆视图中接收,所以我没有在游戏视图中实现,我评论了该代码
-
这就是我的观点。我认为 SurfaceView 正在消耗 MotionEvent 并且没有向它的孩子广播?不能从 SurfaceView 通知操纵杆吗?
标签: android canvas android-canvas surfaceview ontouch