【问题标题】:Unable to apply colorfilter in Android?无法在 Android 中应用颜色滤镜?
【发布时间】:2015-10-06 18:58:55
【问题描述】:

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


        }

    });
}
}

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

此致,

比达尔

【问题讨论】:

标签: imageview colorfilter


【解决方案1】:

将此添加到 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 位数字应该是您用作窗口背景的任何颜色。

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2015-04-19
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多