java - 当其他按钮未按下时,保持按钮按下状态

标签 java android

我有三个按钮,它们是屏幕上的图像。当用户按下按钮区域内的屏幕时,表示按钮被按下的 boolean 值将变为 true。这很有效,除了我有三个按钮,所以当我按住两个按钮并抬起一个按钮时,所有按钮都会变成好像我从未按下过它们一样。我知道在哪里解决这个问题,但我不知道如何解决。如何解决此问题,以便如果我按下了两个按钮,当我从一个按钮抬起手指时,另一个按钮不会变为“未按下”而是保持“按下”状态?

boolean B1Pressed = false;
boolean B2Pressed = false;
boolean B3Pressed = false;

int len = touchEvents.size();
 for (int i = 0; i < len; i++) {
 TouchEvent event = touchEvents.get(i);

 if (event.type == TouchEvent.TOUCH_DOWN) {

 if (inBounds(event, 340,512,140,140)) {
  B1Pressed = true;
  Log.d("GameScreen", "Button 1 Pressed");
 // Button 1
 }

 if (inBounds(event, 340,320,140,140)) {
  B2Pressed = true;
  Log.d("GameScreen", "Button 2 Pressed");
 // Button 2
 }

 if (inBounds(event, 340,120,140,140)) {
  B3Pressed = true;
  Log.d("GameScreen", "Button 3 Pressed");
 // Button 3
 }

 }

 if (event.type == TouchEvent.TOUCH_UP) {

 B1Pressed = false;
 B2Pressed = false;
 B3Pressed = false;
}   
private boolean inBounds(TouchEvent event, int x, int y, int width,
        int height) {
    if (event.x > x && event.x < x + width - 1 && event.y > y
            && event.y < y + height - 1)
        return true;
    else
        return false;
}

最佳答案

这就是问题:

if (event.type == TouchEvent.TOUCH_UP) {

    B1Pressed = false;
    B2Pressed = false;
    B3Pressed = false;
}   

每当注册 TouchEvent.TOUCH_UP 事件时,所有按钮都会被释放。尝试使用相同的逻辑来确定哪些按钮已被按下,以确定哪个按钮已被释放。

if (event.type == TouchEvent.TOUCH_UP) {

 if (inBounds(event, 340,512,140,140)) {
     B1Pressed = false;
     Log.d("GameScreen", "Button 1 Released");
     // Button 1
 }

 if (inBounds(event, 340,320,140,140)) {
     B2Pressed = false;
     Log.d("GameScreen", "Button 2 Released");
     // Button 2
 }

 if (inBounds(event, 340,120,140,140)) {
     B3Pressed = false;
     Log.d("GameScreen", "Button 3 Released");
 // Button 3
 }

 }

关于java - 当其他按钮未按下时,保持按钮按下状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37286865/

相关文章:

android - 如何编写通用 BindingAdapter 来设置 OnLongClickListener?

android - 根据另一个微调器的选定项目更新微调器

java - 为什么要使集合不可修改?

java - JOptionPane 按字面意思显示一些 HTML 标签

java - 使用 CascadeType.ALL 时,JPA 将同一对象保留两次

java - Spring 3 Service Dao 层与抽象类问题

java - 需要为 TextView 格式化货币

android - 找不到以下类 : android. support.v7.internal.app.WindowDecorActionBar

java - onPostExecute() 中的 ArrayList 空指针异常

重构 App 文件夹后 Android Studio 结构发生变化