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

Bar*_*man 4 android android-view android-styles

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

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

提前致谢...

aPr*_*Fox 10

你可以做的一种方法是为ImageView添加一个onclick方法,并在它变灰后为它设置一个标签,并为ColorFilter设置灰色视图.然后,当再次单击时,您可以取消灰色(如果您希望切换灰色).这是一个例子:

将其添加到xml:

<ImageView
   ...
   android:onClick="grayOut"/>
Run Code Online (Sandbox Code Playgroud)

然后在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("");
  }
}
Run Code Online (Sandbox Code Playgroud)