Android - 在GridView上自定义ImageView的Ripple效果

时间:2016-05-31 14:33:57

标签: android android-gridview rippledrawable

在我的Android应用程序中,我有一个GridView,它显示一组图像,每个图像都在ImageView(TickedImageView)的自定义子类中,在选择图像时显示勾号。 我想要实现的是在触摸图像时显示纹波。我试过设置背景

name

没有运气,还添加了具有此背景的包装布局,但似乎没有任何效果。

我的代码如下:

?android:attr/selectableItemBackground

每个GridView项目的布局如下:

<GridView
    android:id="@+id/photos_grid"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:horizontalSpacing="2dp"
    android:numColumns="@integer/photos_grid_num_columns"
    android:stretchMode="columnWidth"
    android:verticalSpacing="2dp"
    android:layout_below="@id/spinner_toolbar" />

ImageView子类(TickedImageView)如下:

<utils.TickedImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/thumb"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="?android:attr/selectableItemBackground"
    android:focusable="true"
    android:clickable="true" />

谢谢。

1 个答案:

答案 0 :(得分:1)

要添加涟漪效果,请添加以下内容:

步骤1:创建形状(drawable / defaultBackground.xml)

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorAccent" />
<stroke
    android:width="3dp"
    android:color="@color/colorAccent" />
<corners android:radius="8dp" />

显然,您可以根据自己的需要进行定制。这将是我们的默认背景。

步骤2:创建波纹背景(drawable / rippleBackground.xml)

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/selectedRed">
<item android:drawable="@drawable/defaultBackground"/>

再次,您可以将颜色更改为您需要的颜色。

第3步:在视图中添加纹波:

<utils.TickedImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/thumb"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/rippleBackground"
android:focusable="true"
android:clickable="true" />