如何显示像facebook这样的按钮效果

时间:2016-02-04 10:33:26

标签: android facebook facebook-like effect

我有一个布局,其中我喜欢按钮,这是一个简单的textview,我已经应用了onclick事件。现在我想展示facebook在facebook android app中点击按钮时显示的相同效果。

如何在我的Android应用程序中执行此操作。如果您有任何想法,请帮助我。

1 个答案:

答案 0 :(得分:0)

如果只想在触摸按钮时提供高光效果,请使用选择器。

将其保存为xml drawable并将此drawable分配给按钮:

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

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_white_09_rectangle_unpressed" android:state_focused="true"
        android:state_pressed="false" />
    <item android:drawable="@drawable/btn_white_09_rectangle_pressed" android:state_focused="true"
        android:state_pressed="true" />
    <item android:drawable="@drawable/btn_white_09_rectangle_pressed" android:state_focused="false"
        android:state_pressed="true" />
    <item android:drawable="@drawable/btn_white_09_rectangle_unpressed" />
</selector>

创建上面xml正在使用的其他2个可绘制xml文件。 btn_white_09_rectangle_unpressed.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <item >
        <shape
            android:shape="rectangle"
            >
            <corners
                android:radius="9dp"/>

            <gradient
                android:angle="45"
                android:endColor="#27FFFFFF"
                android:startColor="#18FFFFFF"
                />
        </shape>
    </item>
</layer-list>

btn_white_09_rectangle_pressed.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <item >
        <shape
            android:shape="rectangle"
            >
            <corners
                android:radius="11dp"/>
            <gradient
                android:angle="90"
                android:endColor="#09FFFFFF"
                android:startColor="#02FFFFFF"
                />
        </shape>
    </item>
</layer-list>

如果您想在用户点击按钮时更改按钮的背景(而不是还原),则必须通过代码执行此操作。 在onClick()

中使用以下代码
your_button.setBackgroundResource(R.id.desired_drawable);