Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 需要按钮返回到正常状态,一旦它没有在应用程序上按下_Android_Android Studio - Fatal编程技术网

Android 需要按钮返回到正常状态,一旦它没有在应用程序上按下

Android 需要按钮返回到正常状态,一旦它没有在应用程序上按下,android,android-studio,Android,Android Studio,我希望我的按钮显示为按下一旦用户从屏幕上删除手指。我用两幅图片来模拟被按下的底部。任何帮助都会很好 ImageButton imageButton; boolean isPressed = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

我希望我的按钮显示为按下一旦用户从屏幕上删除手指。我用两幅图片来模拟被按下的底部。任何帮助都会很好

ImageButton imageButton;
boolean isPressed =  true;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imageButton =(ImageButton) findViewById(R.id.buttonID);
    final MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.sound);

    imageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isPressed) {
                imageButton.setBackgroundResource(R.drawable.image);
            }
            else{
                imageButton.setBackgroundResource(R.drawable.ispressed);
            }
            isPressed = !isPressed;
            mediaPlayer.start();
            Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT).show();
        }
    });
}

}

这是一个很好的选择。您可以创建一个单独的绘图表,其中一个图像用于“按下”状态,另一个图像用于默认状态,然后将其指定给按钮。您不必对按钮背景进行任何实时更新;它将为您自动在两个图像之间切换

  • res/drawable/selector.xml
这样,您就不必在
OnClickListener
中进行任何更新:

imageButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        isPressed = !isPressed;
        mediaPlayer.start();
        Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT).show();
    }
});

为什么不使用
OnTouchListener
isPressed=!表达最后将此
设为false
isPressed==false
)并查看它是否有效。看看这个网站听起来是否准确
imageButton =(ImageButton) findViewById(R.id.buttonID);
imageButton.setBackgroundResource(R.drawable.selector);
imageButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        isPressed = !isPressed;
        mediaPlayer.start();
        Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT).show();
    }
});