Canvas.drawBitmap()没有显示PNG透明度

时间:2012-03-07 15:51:10

标签: android png transparent

我正在使用Canvas.drawBitmap()将png文件渲染到我创建的自定义视图中(创建我自己的自定义按钮)。一切都工作正常,除了PNG在photoshop中有透明背景,但它在我的Android布局中看起来并不透明。布局是listview元素。

我用:

创建图像
    `BitmapFactory.Options opt = new BitmapFactory.Options();
    opt.inPreferredConfig = Config.ARGB_8888;
    this.image = BitmapFactory.decodeResource(context.getResources(), imageResId, opt);`

我用以下方式渲染图像:

     `protected void onDraw(Canvas canvas)
     {
         canvas.drawColor(Color.TRANSPARENT); 
         canvas.drawBitmap(image, WIDTH_PADDING / 2, HEIGHT_PADDING / 2, null);
     }`

目前WIDTH_PADDING和HEIGHT_PADDING都是0,但我不认为这是相关的。

PNG本身是在Photoshop中创建的。我刚做了新文件 - >透明背景 - >并画了一个红色的椭圆形,然后保存为PNG .. PNG显示为White,我希望它是透明的。

Photoshop文件 photoshop file http://www.supercars.net/bb/redovalbutton.png

Android视图 photoshop file http://www.supercars.net/bb/myview.png

我在我的xml中用:

调用它
com.busanbar.busanbardev.pmchat.PMCommentResendButton  
android:id="@+id/resendButton"  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:focusable="true"  
android:focusableInTouchMode="true"  
android:layout_weight="1"  

如何让白色透明,以便在listview容器中看到灰色背景纹理?

1 个答案:

答案 0 :(得分:0)

我用android.graphics.Canvas.Canvas(Bitmap bitmap)做同样的事情

Bitmap b = BitmapFactory.decodeResource(con.getResources(), R.drawable.name_of_png);
Canvas canvas = new Canvas(b);

希望这能解决您的问题。