长按时产生涟漪效果

tom*_*tot 5 android android-animation rippledrawable

我目前正在实现一个应用程序,它有一个 RecyclerView,其中有几个自定义视图。从这些视图中的每一个,用户都可以打开一个上下文菜单(这需要长时间单击),但很难弄清楚,因为通常,他们只会执行一次简单的单击,然后认为没有什么其他的了。但如果我设法提供一些用户界面反馈,情况可能会更加清晰。这个想法是一个简单的波纹动画,突出显示背景,它不会通过简单的单击完成,但会一直持续长时间的单击操作。

因为我已经在这个问题上坚持了两天,所以我做了研究,实际上发现了一些同样的问题,例如Cheok Yan Cheng 的这个问题写得非常好,他甚至发布了一个视频,显示了预期的效果(我的问题几乎完全相同)但没有好的答案,因为第一个答案说我们应该使用,?attr/selectableItemBackground但给定的效果与我想要的效果不同,我尝试了第二个答案,它没有做任何事情在 onLongClick 中启动动画时进行简单的单击。

编辑 :

请注意,通过创建一个ripple xml 文件,然后将其设置为背景,无法实现预期的行为 ?attr/selectableItemBackground,因为这将再次提供正常的 onClick 动画和与所需动画不同的 longClick 动画,请观看此视频以了解想要的效果是。

Gou*_*har 0

创建一个名为ripple.xml 的xml 文件,然后将ripple.xml 设置为视图的前景。它将像魅力一样发挥作用!

<?xml version="1.0" encoding="utf-8"?>
<!-- An white rectangle ripple. -->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="#3fce29"
    tools:targetApi="lollipop">
    <item
        android:id="@android:id/mask"
        android:gravity="center">
        <shape android:shape="rectangle">
            <solid android:color="#3fce29"/>
        </shape>
    </item>
</ripple>
Run Code Online (Sandbox Code Playgroud)