【问题标题】:Android - Image on Button Pressed Event - Apply Image Overlay to AllAndroid - 按钮按下事件上的图像 - 将图像叠加应用于所有
【发布时间】:2012-11-21 03:55:17
【问题描述】:

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

所以问题的关键是,有没有办法只制作一张图片(浅蓝色 25% 不透明度图像)作为所有按钮按下的叠加层,同时保持我设置的按钮的原始背景保持不变那里?

【问题讨论】:

    标签: android image button


    【解决方案1】:

    加载图像。然后在其上绘制 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 );
    

    【讨论】:

    • 你可以很容易地把它写成一个方法来传递你的Bitmap和想要的Color,然后得到修改后的彩色位图。为您的按钮
    • 我一直遇到问题,给我一个不可变位图空点问题。我查了一下,发现了一种可以将不可变位图转换为可变位图的方法。这是需要做的事情还是我错过了什么? (我的图片是标准的.png)
    • @user1873141 如果您正在接收不可变位图,那么制作它的可变副本是的。我个人从来没有遇到过这个问题,所以不确定它为什么会发生。 stackoverflow.com/a/13119762/940834
    • 我让它工作了,起初它很棘手,因为它没有错误,但我没有看到任何变化。然后我发现几乎不可能看到 20 的 alpha 值。一旦我达到80,我就能注意到它。我唯一的最后一个问题是,这是我应该在 onClick 事件中触发的东西吗?
    • 我想出了另一种更简单的方法。您可以将标准图片设为“android:background”。然后对于覆盖部分,只需创建一个 xml 文件,其中包含用于执行按钮状态的标准选择器和项目内容,但对于该 xml,其中只有“按下”和“聚焦”状态。然后将这些状态的可绘制对象(在您刚刚制作的 xml 中)设置为 1 张图片,该图片是您的颜色在所需不透明度下的图像。然后回到 imagebutton,将你的“android:src”设置为你创建的那个 xml,然后它就像一个魅力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多