无法在Android中应用colorfilter?

时间:2015-10-06 18:58:55

标签: imageview colorfilter

我正在尝试在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;


        }

    });
}
}

如果你知道我做错了什么,请告诉我。我真的很感激。

此致,

维达尔

1 个答案:

答案 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位数字应该是您用作窗口背景的任何数字。