当按下时,如何部分地使图像变灰?

4
我有一张用作按钮的图像。它是RelativeLayout中的ImageView。RelativeLayout是接收触摸事件的视图。当被触摸时,我希望部分灰化图像以作为反馈。如何做到这一点?
我能想到的最好方法是在ImageView上方放置另一个View,并将其样式设置为100%透明,但仅在触摸时透明度为50%。 有没有一种方法可以直接对RelativeLayout或ImageView进行样式设置而不使用其他View? 提前致谢...

setColorFilter对于ImageView来说是一个很好的起点,但这实际上取决于你想要的效果。 - user2213590
2个回答

15

有一种方法可以实现这个功能,那就是为ImageView添加一个onclick方法,并在它变为灰色且设置标签后,为其设置一个ColorFilter以使其变灰。然后,当再次点击时,您可以取消灰色效果(只要您想要切换灰色效果)。下面是一个示例:

将以下内容添加到xml中:

<ImageView
   ...
   android:onClick="grayOut"/>

然后在 Activity 或 View 类中进行操作

public void grayOut(View view) {
  // if not grayed
  if(view.getTag() != "grayed") {
    view.setColorFilter(Color.argb(150,200,200,200));
    view.setTag("grayed");
  } else {
    view.setColorFilter(null);
    view.setTag("");
  }
}

1

在触摸视图时,使用透明灰色的颜色过滤器,并在想要移除灰色时将其移除。代码如下:imageView.setColorFilter(透明灰色); 当你想要移除它时,只需将颜色过滤器设置为null。


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