【问题标题】:How do I partially gray out an image when pressed?按下时如何使图像部分变灰?
【发布时间】:2014-08-22 19:32:54
【问题描述】:

我有一张图片用作按钮。它是一个相对布局中的 ImageView。 RelativeLayout 是接收触摸事件的 View。触摸时,我想将图像部分变灰作为反馈。我该怎么做?

我能想到的最好方法是在 ImageView 顶部放置另一个带有黑色背景的 View,并将其设置为通常 100% 透明,但触摸时只有 50% 透明。 有没有办法直接设置 RelativeLayout 或 ImageView 的样式而不使用额外的 View?

提前谢谢...

【问题讨论】:

  • ImageView 的 setColorFilter 将是一个不错的起点,但这实际上取决于您所追求的效果

标签: android android-view android-styles


【解决方案1】:

您可以这样做的一种方法是为 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("");
  }
}

【讨论】:

    【解决方案2】:

    在触摸时在视图上使用具有透明灰色的滤色器,并在您想要移除灰色时将其移除。它将是 imageView.setColorFilter(透明灰色);当你想删除它时,只需将颜色过滤器设置为 null。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-04
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      相关资源
      最近更新 更多