按下时如何将图像部分灰显?

时间:2014-08-22 19:32:54

标签: android android-view android-styles

我有一个用作按钮的图像。它是RelativeLayout中的ImageView。 RelativeLayout是接收触摸事件的视图。触摸时,我想将图像部分灰化为反馈。我该怎么做?

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

提前致谢...

2 个答案:

答案 0 :(得分:10)

你可以做的一种方法是为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 :(得分:0)

触摸时在视图上使用透明灰色的滤色镜,如果要删除灰色,请将其删除。它将是imageView.setColorFilter(透明灰色);如果要删除它,只需将颜色过滤器设置为空。