为什么button.ispressed在android上不起作用

问题描述

嗨,我只在按下按钮(不是物理按钮)时才尝试点亮android上的led 所以我在下面尝试了这段代码,但不适用于未按下的方法: 我只想在按下按钮的时候被引导打开

button.setOnClickListener(new View.OnClickListener(){

            @Override

            public void onClick(View view) {

                if(!button.isPressed()){
                try {

                    mLightGpio = mPeripheralManager.openGpio("BCM3");
                    mLightGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH);


                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
              else
                  {
                   try {
                       mLightGpio = mPeripheralManager.openGpio("BCM3");
                       mLightGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);

                   } catch (IOException e) {
                       e.printStackTrace();
                   }
                }
            }

        });
    }

解决方法

因为onClick仅调用一次。我建议在按下按钮时点亮LED(ACTION_DOWN),并在释放按钮时将其关闭(ACTION_UP)。

使用类似这样的内容:

button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v,MotionEvent event) {
        switch (event.getAction() ) {
            case MotionEvent.ACTION_DOWN:
                // light up
            break;

            case MotionEvent.ACTION_UP:
                // turn off
            break;
        }

        return false;
    }
});

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...