Нужна кнопка, чтобы вернуться в нормальное состояние, если она не нажата в приложении - PullRequest
0 голосов
/ 03 октября 2018

Я хочу, чтобы моя кнопка выглядела нажатой, когда пользователь убирает палец с экрана.Я использую два изображения для имитации нижнего нажатия.Любая помощь будет отличной

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();
        }
    });
}

}

1 Ответ

0 голосов
/ 03 октября 2018

Это хороший кандидат для использования «Списка состояний» для рисования .Вы создаете один чертеж, который имеет одно изображение для «нажатого» состояния и другое для состояния по умолчанию, а затем назначаете его для своей кнопки.Вам не нужно обновлять фон кнопки в режиме реального времени;он просто автоматически переключится между двумя изображениями для вас.

  • res / drawable / selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:drawable="@drawable/ispressed"/>
    <item android:drawable="@drawable/image"/>

</selector>

Теперь вы просто устанавливаете фон кнопки на это напрямую(либо в Java, либо в XML):

imageButton =(ImageButton) findViewById(R.id.buttonID);
imageButton.setBackgroundResource(R.drawable.selector);

И тогда вам не нужно вносить какие-либо обновления в OnClickListener:

imageButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        isPressed = !isPressed;
        mediaPlayer.start();
        Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT).show();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...