Java Android如何使ImageView在单击时更暗

Java Android如何使ImageView在单击时更暗,java,android,imageview,Java,Android,Imageview,正如一位iOS开发者告诉我的那样,当有人点击它时,iOS会使图像变暗(我不知道这是多么真实),所以我需要同样的东西 据我所知,我需要一个普通的selector.xml来创建一个具有不同状态的可绘制文件。 我需要的是以一种简单的方式将图像变暗,可以以某种方式以xml绘制,这样我就不必使用我没有技能的Photoshop 有没有办法在xml级别这样做?你可以在位图后面放置一个黑色矩形,设置位图的不透明度,而不是尝试在xml中添加一个clickListener到图像中 ImageView image =

正如一位iOS开发者告诉我的那样,当有人点击它时,iOS会使图像变暗(我不知道这是多么真实),所以我需要同样的东西

据我所知,我需要一个普通的selector.xml来创建一个具有不同状态的可绘制文件。 我需要的是以一种简单的方式将图像变暗,可以以某种方式以xml绘制,这样我就不必使用我没有技能的Photoshop


有没有办法在xml级别这样做?

你可以在位图后面放置一个
黑色矩形
,设置
位图的
不透明度
,而不是尝试在
xml
中添加一个clickListener到图像中

ImageView image = (ImageView) view.findViewById(R.id.image);
icon.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                ImageView image = (ImageView)v;
                image.setImageAlpha(alpha);

            }
        });

您可以在java类中使用以下代码:

mView.getBackground().setColorFilter(Color.parseColor(<Color code of your choice>), PorterDuff.Mode.DARKEN);
mView.getBackground().setColorFilter(Color.parseColor(),PorterDuff.Mode.DARKEN);
上面的这一行将视图的颜色更改为您在color.parseColor()中建议的颜色,并使用类似于您使用PorterDuff.Mode定义它的阴影。点击按钮调用上述代码,检查颜色更改是否生效。

private void darkenImage(ImageView imageView)
{
    imageView.setColorFilter(Color.rgb(123, 123, 123), android.graphics.PorterDuff.Mode.MULTIPLY);
}

private void undarkenImage(ImageView imageView)
{
    imageView.clearColorFilter();
}

private boolean isImageDarkened(ImageView image)
{
    return image.getColorFilter() != null;
}

效果非常好

一种可能是用另一个视图覆盖您的imageview,然后在视图上使用选择器。在选择器中,当选择“亮”时,您可以只制作一个较暗的背景,但您肯定需要在视图后面放置一个较暗的矩形或一个具有深色的图像,然后通过更改视图的alpha,您将获得所需的效果。@Homo sapiens:您所说的暗矩形是什么意思?如果图像不是矩形,而且它周围也有一些透明度。?如果我们放置一个黑色的矩形,那么图像会得到效果,但是透明区域看起来会很奇怪。
getBackground()
可能会返回null,所以在使用前请检查null。