Хобрук: Ваш путь к мастерству в программировании

Нужна кнопка, чтобы вернуться в нормальное состояние, если она не нажата в приложении.

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

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

}

02.10.2018

  • Почему бы вам не использовать OnTouchListener ? 03.10.2018
  • isPressed = !isPressed; сделайте это false (isPressed == false) в конце и посмотрите, работает ли это. 03.10.2018
  • Взгляните на этот веб-сайт stackoverflow.com/questions/11690504/ 03.10.2018

Ответы:


1

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

  • 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();
    }
});
02.10.2018
  • Звучит точно ???? лучший способ сделать это на самом деле. 03.10.2018
  • Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

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