Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-按下按钮时的图像事件-将图像覆盖应用于所有_Android_Image_Button - Fatal编程技术网

Android-按下按钮时的图像事件-将图像覆盖应用于所有

Android-按下按钮时的图像事件-将图像覆盖应用于所有,android,image,button,Android,Image,Button,我的问题是对所有按下按钮的事件应用图像覆盖。例如,在Android 4.0及更高版本的holo设置中,当您按下任何按钮时,按钮上都会覆盖浅蓝色。在android的早期版本中,它是橙色的。我知道如何设置按钮来更改XML中带有选择器和项目标记的按下、聚焦和默认图像,但这需要我为按钮制作另一个图像,但带有浅蓝色覆盖层,这意味着我知道每个按钮有两张图片。我的应用程序将有很多按钮,我想保持应用程序的文件大小尽可能小 所以问题的关键是,有没有一种方法可以使一张图片(浅蓝色25%不透明度图像)作为覆盖应用于所

我的问题是对所有按下按钮的事件应用图像覆盖。例如,在Android 4.0及更高版本的holo设置中,当您按下任何按钮时,按钮上都会覆盖浅蓝色。在android的早期版本中,它是橙色的。我知道如何设置按钮来更改XML中带有选择器和项目标记的按下、聚焦和默认图像,但这需要我为按钮制作另一个图像,但带有浅蓝色覆盖层,这意味着我知道每个按钮有两张图片。我的应用程序将有很多按钮,我想保持应用程序的文件大小尽可能小


所以问题的关键是,有没有一种方法可以使一张图片(浅蓝色25%不透明度图像)作为覆盖应用于所有按键,同时保持我设置的按钮的原始背景保持在那里?

在图像中加载。然后在其顶部绘制alpha颜色

然后使用修改后的图像设置按钮图像

Bitmap img = BitmapFactory.decodeFile(pathName); // or decodeResource  etc....

Canvas canvas = new Canvas(img);
Paint alphaPaint = new Paint();

// Color to apply.
alphaPaint.setColor(Color.BLUE);
alphaPaint.setAlpha(20);

// Draw rectangle over your image using the alpha colored paint.
canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), alphaPaint);
myButton.setImageBitmap(img );

您可以很容易地将其写入一个方法中,以传入
位图和所需的
颜色,然后取出修改后的彩色位图。对于你的按钮,我一直有问题,给我一个不变的位图空点问题。我查了一下,找到了一种方法,可以将不可变位图转换为可变位图。这是需要做的事情还是我遗漏了什么?(我的图片是一个标准的.png)@user1873141如果你收到的是不可变的位图,那么制作它的可变副本是的。我个人从来没有遇到过这个问题,所以不确定为什么会发生。我让它工作了,一开始很棘手,因为它没有错误,但我没有看到任何变化。然后我发现阿尔法值20几乎是不可能看到的。一旦我达到80,我就能注意到。我唯一要问的最后一个问题是,这是我应该在onClick事件中触发的吗?我想出了另一种更简单的方法。您可以将标准图片设置为“android:background”。然后,对于覆盖部分,只需创建一个xml文件,该文件具有用于执行按钮状态的标准选择器和项目内容,但对于该xml,只有“按下”和“聚焦”状态。然后将这些状态的可绘制内容(在刚刚创建的xml中)设置为1个图片,该图片是您所需不透明度下的颜色图像。然后回到imagebutton,将您的“android:src”设置为您创建的xml,然后它就像一个符咒一样工作。