android - 当用户点击 ImageView 时蓝色突出显示

标签 android android-imageview touch-feedback

我有一个带有 ImageView 和 TextView 的 LinearLayout“卡片”。我希望卡片在用户点击时突出显示。参见 http://www.youtube.com/watch?v=Yx1l9Y7GIk8&feature=share&t=15m17s举个例子。

通过设置 android:background="@drawable/blue_highlight" 可以很容易地为 TextView 完成此操作。下面是 res/drawable/blue_highlight.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_selected="true" android:drawable="@color/selected"/>
  <item android:state_pressed="true" android:drawable="@color/pressed"/>
  <item android:drawable="@color/bg_window"/>
</selector>

但这对 ImageView 不起作用,因为图像在前面,背景不可见。 ImageView如何实现半透明颜色的触摸高亮效果?

最佳答案

令人惊讶的是,FrameLayout 有 foreground可用于此的属性。缺点是您必须添加额外的 FrameLayout 元素。实现很简单,所以直到您有时间实现花哨的图像处理(对图像进行一点去色,然后应用高光)和动态构建状态可绘制对象,这似乎已经足够好了。

所以在我的例子中,这将是:

<FrameLayout
    android:foreground="@drawable/blue_highlight_image"
    >
  <ImageView ...>
</FrameLayout>

@drawable/blue_highlight_image 使用新的@color/pressed_image 值,它与@color/pressed 相似,但有一个 alpha channel ,例如:#81CFEB -> #AA81CFEB。

感谢@Vang 的建议。

关于android - 当用户点击 ImageView 时蓝色突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19725885/

相关文章:

android - 更改 ImageView 源

java - Android 中带旋转的 ImageView

android - 为每个按钮启用触摸反馈

android - 如何在android中显示多行通知?

java - Android,如何在项目中包含不是 JAR 文件的特定库?

android - 在不添加到 backstack 的情况下弹出 backstack 时找不到 id 的 View

android - WebRTC无法录屏

android - 单击时如何使android chronometer不可见和可见