gpt4 book ai didi

Android:OnKeyListener 相机按钮?

转载 作者:搜寻专家 更新时间:2023-11-01 09:10:12 26 4
gpt4 key购买 nike

我目前正在为 Android 制作一款游戏,我希望能够在其中使用相机按钮进行拍摄(或者我不介意使用不同的硬件按钮,只是点击屏幕会很垃圾)。

在我看来我有:

public class GameFrame extends SurfaceView implements SurfaceHolder.Callback, OnKeyListener{
public GameFrame(Context context){
...
setOnKeyListener(this);
...
}

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN)
{
shoot();
return true;
}
return false;
}
}

但这并没有做任何事情,即使我疯狂地敲击手机上的所有按键,也不会调用 shoot() !有什么明显的我错过了,还是我做错了?

干杯

最佳答案

您的代码是正确的,并且监听器已正确附加到您的 SurfaceView。这里的问题有点误会:

当您将 OnKeyListener 附加到 View 时,监听器在特定 View 获得焦点时接收按键事件。如果 Activity 中存在多个 View ,这对于区分关键监听器是必要的。您的观点很可能并不关注启动。

您可以在代码中聚焦 View ,我推荐这样做,因为如果您还有其他 View ,用户可能会不小心清除焦点。这是一个如何更改代码的小 fragment ,仅供引用/理解:

public class GameFrame extends SurfaceView implements SurfaceHolder.Callback, OnKeyListener{
public GameFrame(Context context){
...
setOnKeyListener(this);

setFocusable(true);
setFocusableInTouchMode(true);
requestFocus();
...
}

....
}

更好的选择的方法是获取 Activity 中的所有关键事件,而不管关注的是哪个 View 。这可以通过覆盖 Activity 来完成 onKeyDown()方法。在您的 Activity 中添加类似这样的内容:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN)
{
shoot();
return true;
}
return false;
}

关于Android:OnKeyListener 相机按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773592/

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