点击时如何在button上制作一个圆形的波纹?
背景
在Android的拨号器应用程序中,当您开始search某些内容时,单击EditText左侧的箭头button,您会得到一个循环的连锁反应:
问题
我也尝试过,但我有一个长方形的:
<ImageButton android:id="@+id/navButton" android:layout_width="40dp" android:layout_height="40dp" android:layout_gravity="center_vertical" android:layout_marginLeft="8dp" android:background="?android:attr/selectableItemBackground" android:src="@drawable/search_ic_back_arrow"/>
这个问题
点击时如何使button有一个圆形的涟漪效应? 我是否需要创build一个新的drawable,还是有内置的方法?
如果您使用AppCompat主题,则可以将视图的背景设置为:
android:background="?selectableItemBackgroundBorderless"
这会在21及以上增加圆形波纹,在21以下增加正方形背景。
创build并设置一个可绘制的波纹作为背景。 像这样的东西。
<?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>
你可以在xml中使用android:radius
属性创build可绘制的圆形波纹。
例:
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="your_color" android:radius="your_radius" />
注意,你的your_radius
应该小于你的视图的宽度和高度。 例如:如果您的视图大小为60dp x 60dp
your_radius
应该接近30dp
(宽度/ 2或高度/ 2)。
在Android 5.0及更高版本上工作。