Как сделать, чтобы кнопка с пользовательским фоновым изображением показывала анимацию клика в Android - PullRequest
7 голосов
/ 16 апреля 2010

Как сделать так, чтобы кнопка показывала, что она нажата (установив ее нажатие / некоторые изменения) для кнопок, использующих фоновое изображение в Android Я не хочу включать больше изображений и устанавливать разные для разных состояний, как показано в примере Google hello views. Спасибо.

Ответы [ 4 ]

12 голосов
/ 16 апреля 2010

Вы должны использовать два изображения для этого.

  1. button_normal
  2. button_pressed

затем создайте ресурс XML в папке для рисования

<?xml version="1.0" encoding="UTF-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="false"
    android:drawable="@drawable/button_normal" />

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

</selector>

затем установите этот файл в качестве фона для изображения. здесь мы используем imageview как кнопку. не забудьте включить эти две кнопки в папку для рисования. вот и все.

2 голосов
/ 19 апреля 2010

Это можно сделать только с одним файлом изображения, используя метод ColorFilter. Однако ColorFilter рассчитан на работу с ImageViews, а не с кнопками, поэтому вам нужно преобразовать свои кнопки в ImageViews. Это не проблема, если вы используете изображения в качестве кнопок в любом случае, но это более раздражает, если у вас есть текст ... В любом случае, если вы найдете способ обойти проблему с текстом, вот код для использования:

ImageView button = (ImageView) findViewById(R.id.button);
button.setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);

Применительно к кнопке применяется красное наложение (цветовой код - это шестнадцатеричный код для полностью непрозрачного красного - сначала две цифры - прозрачность, затем RR GG BB.).

Вы можете сделать свои ImageViews похожими на обычные кнопки, скопировав файл btn_default_normal.9.png из вашей sdkfolder / platform / (android version / data / res / drawable в ваш собственный проект. Затем в вашем ImageView используйте android:background="@drawable/btn_normal_default" и android:src="..." чтобы установить изображение внутри кнопки.

1 голос
/ 14 сентября 2011

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

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/image">
        </item>
        <item android:drawable="@drawable/transparent_image">
        </item>
    </layer-list>
</item>
<item android:drawable="@drawable/image"></item>
</selector>
0 голосов
/ 15 марта 2013

просто хочу добавить еще один простой способ сделать это: Если ваш ImageButton остается его фоном, а вы не установили его на ноль, он будет работать как обычная кнопка и будет отображать анимацию щелчка при нажатии точно так же, как другие кнопки. Способ скрыть фон, пока он еще там: *

<ImageButton
    android:id="@+id/imageButton2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingBottom="1dp"
    android:paddingLeft="1dp"
    android:paddingRight="1dp"
    android:paddingTop="1dp"
    android:src="@drawable/squareicon" />

отступы не позволяют фону быть видимым и заставляют кнопку работать как другие кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...