Android 项目按下和释放的 GridView 视觉反馈

Android GridView visual feedback for item press and release

我正在从另一个平台移植应用程序,并使用 GridView 为音板实现 UI。网格中的每个项目都是在 XML 中定义的简单自定义布局,由位于根部的 RelativeLayout 和用于保存位图的子 ImageView 以及用于保存一些文本的 TextView 组成。用户按下该项目并播放声音。一切正常。缺少的是某种视觉反馈,即 GridView 项目被按下然后被释放。在另一个平台上,添加这样的动画相对简单。

Android 上的 GridView 控件是否具有执行此操作的内置方法,还是我必须自己动手?我在想我可以使用 setOnTouchListener() 来获取 ACTION_DOWN 和 ACTION_UP 事件,确定它所针对的网格中的项目,然后将 ScaleAnimation 应用于每个事件的项目。但是,对于看似基本的功能而言,这似乎过于复杂。我是否漏掉了一些明显的东西?

您可以使用 setColorFilter。在 MotionEvent.ACTION_DOWN 上启用它并在 MotionEvent.ACTION_UP 上禁用它(例如,将滤色器设置为 null 或调用 clearColorFilter()):)

您可以像这样使用自定义背景。
将其放入可绘制文件夹。
my_custom_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/abc_list_pressed_holo_dark" android:state_enabled="true" android:state_pressed="true"/>
    <item android:drawable="@drawable/abc_list_pressed_holo_dark" android:state_enabled="true" android:state_focused="true"/>
    <item android:drawable="@drawable/abc_list_pressed_holo_dark" android:state_enabled="true" android:state_selected="true"/>
    <item android:drawable="@drawable/defaultbackground" android:state_enabled="true" android:state_selected="false"/>
    <item android:drawable="@drawable/defaultbackground" android:state_enabled="true"></item>

</selector>

不如这样用。

textView.setBackgroundResource(R.drawable.my_custom_bg);