如何创建圆形涟漪?

4
我想创建类似于红框中所示并且由箭头指示的水波纹效果。

enter image description here

无论我将 selectableItemBackground 设置为任何元素,它都只会在元素的布局边界上显示涟漪效果,而不是像我上面分享的那样。请提供一个可行的示例。谢谢。
4个回答

9

1
尝试了那个,但没有帮助。我将其设置为背景属性。它只是在元素布局上显示涟漪效果。 - Ali_Waris
2
@Ali_Waris 奇怪,这个属性应该使涟漪效果超出视图的边界。可能是容器 ViewGroup 裁剪了背景资源。尝试在父 ViewGroup 上将 android:clipChildren 属性设置为 false - Bryan
只有一个问题,它在API 21以下无法工作。但是,这正是我正在寻找的。如果您可以帮助我实现向后SDK兼容性,我将不胜感激。 - Ali_Waris
1
很抱歉,水波纹效果在API 21以下的版本中不受支持。虽然v7 appcompat库中有一个属性,但它并没有向后兼容水波纹效果。相反,它只是降级以避免崩溃(要应用支持库属性,请使用?attr/selectableItemBackgroundBorderless而不是?android:attr/selectableItemBackgroundBorderless)。 - Bryan
1
@Ali_Waris 要在较低的平台版本上应用涟漪效果的唯一方法就是要么自己编写代码,要么使用第三方库(快速搜索会带您找到几个)。 - Bryan

2
使用actionBarItemBackground值作为background(背景)
android:background="?android:attr/actionBarItemBackground"

1
是的!我已经寻找这样一种简单直接的方法8年了! - Izak

0

android:background="?selectableItemBackgroundBorderless"

安卓:背景="?selectableItemBackgroundBorderless"

<androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/imageViewCancel"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:src="@drawable/ic_x"
        android:background="?selectableItemBackgroundBorderless"
        app:layout_constraintBottom_toTopOf="@id/lineTopHorizontal"
        app:layout_constraintStart_toEndOf="@id/lineVerticalStart" />

-1

您可以创建简单的涟漪可绘制文件:

/res/drawable/transparent_ripple.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="#77333333" />

1
是的,不会。涟漪效果仅适用于5.0+版本,旧版本未针对此动画进行优化。您可以在drawable-v21文件夹中拥有涟漪可绘制对象,并在drawable文件夹中使用selector创建简单的可绘制对象。或者您可以尝试找到一些库来帮助您进行后向兼容。 - egoldx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接