Android如何在位图XML中设置透明度

5

我需要通过xml创建位图资源,例如:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/btn_home"
    >
</bitmap>

但是我需要将透明度设置到这个位图中。有没有办法可以使用这个xml来实现?我知道如果允许在位图标记内部使用形状标记,那么它会起作用,但我尝试过没有成功。


我在位图定义中添加了android:alpha=".5",但没有成功。还有其他人能够解决这个问题吗? - lostintranslation
1个回答

3
如果您在ImageView中显示Bitmap,那么您可能可以使用ImageView.setAlpha(int)方法。但是,如果通过RemoteViews访问ImageView,例如在更新小部件时,您将无法调用此方法(如果尝试通过RemoteViews.setInt(int,String,int)调用它,则会收到一个异常告诉您无法这样做)。
 private Bitmap adjustOpacity(Bitmap bitmap, int opacity)
    {
        Bitmap mutableBitmap = bitmap.isMutable()
                               ? bitmap
                               : bitmap.copy(Bitmap.Config.ARGB_8888, true);
        Canvas canvas = new Canvas(mutableBitmap);
        int colour = (opacity & 0xFF) << 24;
        canvas.drawColor(colour, PorterDuff.Mode.DST_IN);
        return mutableBitmap;
    }

更多信息。最常见的问题就像你一样。 如何在Android中设置视图的不透明度(Alpha)

来自developer.android.com的位图文档。


8
谢谢您的建议。但是我想在XML中设置不透明度,这样我以后可以在选择器中使用它。 - Comic Sans MS Lover
@ComicSansMSLover:我在选择器中使用了 android:alpha="0.6",但在 APL 20 及以下版本中无效。你有找到任何解决方法吗? - Ashish Tiwari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接