我正在尝试在Android Studio中为我的图片提供点击效果。我们的想法是,当您按下按钮时应用滤色器,然后在释放按钮后清除滤色器。
我尝试使用hte OnTouch方法使用switch语句来做到这一点,但是当我打开应用程序时它只是崩溃了。
这是我的代码:
{
final ImageView DNIcon_id = (ImageView) findViewById(R.id.DNIcon_id);
DNIcon_id.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
sp.play(DN_id, 1, 1, 1, 0, 1);
switch (event.getAction()) {
case (MotionEvent.ACTION_BUTTON_PRESS): {
DNIcon_id.setColorFilter(Color.GRAY, PorterDuff.Mode.LIGHTEN);
break;
}
case (MotionEvent.ACTION_BUTTON_RELEASE): {
DNIcon_id.clearColorFilter();
break;
}
}
return true;
}
});
}
}
如果你知道我做错了什么,请告诉我。我真的很感激。
此致,
维达尔
答案 0 :(得分:0)
将其添加到res / values / colors.xml
<color name="opaque">#90FFFFFF</color>
制作res / drawable / overlay.xml并将其放入其中
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/opaque" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
这是一个如何使用它的例子
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="150dp"
android:layout_height="150dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/your_image_here"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/overlay"/>
</FrameLayout>
关于颜色的注意事项:
您可以更改颜色中的“90”以使其或多或少不透明。请记住,它是十六进制的,因此完全不透明度为'FF'。此外,此解决方案假设您使用#FFFFFF作为应用程序中的窗口背景。 “不透明”颜色的最后6位数字应该是您用作窗口背景的任何数字。