Изменить заполнение на Android ImagePadding при нажатии - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть Android ImageButton, и я могу изменить цвет фона, тонирование и т. Д. Для разных состояний.

То, что я хочу, - это «небольшое движение» изображения, когда пользователь нажимает кнопку.

Итак, моя идея заключалась в том, чтобы добавить другой отступ для нажатого состояния, но я не знаю, как (в xml).

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

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

1 Ответ

0 голосов
/ 12 сентября 2018

Попробуйте это. Это не совсем изменит ваш отступ, но немного увеличит изображение, а затем вернет его назад (или вернет его к 0,9 и 1,0, чтобы уменьшить и уменьшить). Я думаю, что это то, что вы ищете.

Использовать селектор под ресурсами аниматора:

<!-- res/animator/image_button_pressed.xml -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true">
        <set>
            <objectAnimator
                android:duration="100"
                android:propertyName="scaleX"
                android:valueTo="1.1"
                android:valueType="floatType"/>
             <objectAnimator
                android:duration="100"
                android:propertyName="scaleY"
                android:valueTo="1.1"
                android:valueType="floatType"/>
        </set>
    </item>
    <item android:state_focused="false">
        <set>
            <objectAnimator
                android:duration="100"
                android:propertyName="scaleX"
                android:valueTo="1.0"
                android:valueType="floatType"/>
             <objectAnimator
                android:duration="100"
                android:propertyName="scaleY"
                android:valueTo="1.0"
                android:valueType="floatType"/>
        </set>
    </item>
</selector>

Вы можете иметь 0 длительностей для прямого перехода к значению или указать длительность.

Затем, чтобы использовать его, установите android:stateListAnimator на ваш взгляд:

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/your_drawable"
    android:stateListAnimator="@animator/image_button_pressed"/>

Вы также можете добавить другой объектAnimator в набор, чтобы изменить перевод Z, чтобы он поднимался при печати (в соответствии с указаниями к материалу)

...