代码之家  ›  专栏  ›  技术社区  ›  ManniAT

按下时更改Android图像上的填充

  •  0
  • ManniAT  · 技术社区  · 6 年前

    我有一个android的ImageButton,我可以改变不同状态的背景色、色调等等。

    我想要的是当用户按下按钮时图像的“轻微移动”。

    有没有办法做到这一点。我知道一种方法是使用不同的图像来表示状态,透明图像中“图标”所在的位置不同。

    1 回复  |  直到 6 年前
        1
  •  1
  •   rexar5    6 年前

    试试这个。它不会完全改变你的填充,但它会将图像放大一点,然后再缩小(或者将其反转为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"/>
    

    也可以将另一个objectAnimator添加到集合中以更改translationZ,使其在按下时上升(根据材质准则)