2016-12-15 12 views
0

Хорошо, поэтому я понял эффект пульсации доступен только LOLLIPOP и выше. Но, тем не менее, при настройке моего ImageButton я не получаю хороший эффект пульсации, который будет работать как «обычная» кнопка, просто покажите изображение (и прозрачный bg) ...Android imagebutton эффект пульсации

Я добавил AppCompat v7 и поставить второй макет в моей вытяжке/папке раскладки-V21, которая имеет следующую кнопку в нем:

<ImageButton 
    android:id="@+id/forward" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:width="15dp" 
    android:scaleType="fitCenter" 
    android:height="15dp" 
    android:padding="25dp" 
    style="@style/Widget.AppCompat.ImageButton" 
    android:src="@drawable/forwardplay" /> 

Но фон серый и пульсация (серый тоже) не может быть изменена.

Итак, если бы у меня была только хорошая рябь, которую можно было бы положить в мой drawable-v21, это было бы здорово, и я мог бы ссылаться на нее из свойства фона ImageButton. Дело в том, что я не могу найти оригинальный эффект андроида Ripple (у меня есть телефон Samsung S6, это тема Samsung?)

Хотел бы, чтобы любой мог поделиться своей рабочей возможностью.

Спасибо!

+0

Попробуйте это: 'android: background ="? Attr/selectableItemBackgroundBorderless "' –

+0

Нет, что приводит к сбою приложения. компиляция для SDK 23 (получил v25 уже - попробовал оба ...) – rubmz

ответ

0

Попробуйте использовать

android:background="?selectableItemBackground" 
+0

Нет, это выглядит плохо с серым фоном. – rubmz

0

Вы можете сделать вытяжку и установить фон для вашей кнопки.

<?xml version="1.0" encoding="utf-8"?> 
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="@color/grey_15"> 
    <item android:id="@android:id/mask"> 
     <shape android:shape="oval"> 
      <solid android:color="?android:colorPrimary"/> 
     </shape> 
     <color android:color="@color/white"/> 
    </item> 
</ripple> 

изменить цвет вашей спецификации.

+0

Нет. Пробовал это, он выглядит как маленькая точка, которая не растет. – rubmz

0

После попытки следующий answer:

<?xml version="1.0" encoding="utf-8"?> 
<ripple android:color="#ffffff" 
     xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@android:id/mask" 
      android:drawable="@android:color/white" /> 
</ripple> 

Я нашел кусок ума :) Работает как шарм!

Резюмируя:

  1. поместить макет в макете-v21 для поддержки новых устройств (и сохранить копию для старых устройств в обычной папке вытяжки/макете
  2. создать папку вытяжки-V21 и. поместить текст в файл с именем ripple.xml
  3. установить его в качестве фона, как так:

    <ImageButton 
        android:id="@+id/forward" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:width="15dp" 
        android:scaleType="fitCenter" 
        android:height="15dp" 
        android:padding="25dp" 
        android:background="@drawable/ripple_bg" 
        android:src="@drawable/forwardplay" /> 
    
0

... это тема Samsung?

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

Это зависит от того, что вы собираетесь делать. Если вы используете значок, похожий на то, что вы бы увидеть в панели действий, вы можете использовать actionButtonStyle:

style="?attr/actionButtonStyle" 

Есть также несколько других стилей кнопки attribtes вы можете выбрать, что может или не может включают эффект пульсации.

В противном случае, если вы используете реальное изображение, как кнопки, вы можете использовать атрибут selectableItemBackground или selectableItemBackgroundBorderless как передний план:

android:foreground="?attr/selectableItemBackground" 
3

Try это, безусловно, он должен работать:

<ImageButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@android:drawable/YOUR_BUTTON_SOURCE" 
    android:background="?attr/selectableItemBackgroundBorderless" 
/>