【问题标题】:Transparent Bitmap in ImageViewImageView 中的透明位图
【发布时间】:2012-10-09 22:43:44
【问题描述】:

我想在现有位图上绘制一些东西,同时保持位图分开。所以想法是让一个RelativeLayout和两个ImageViews堆叠在一起,上面的一个保存要绘制的位图,下面的一个保存带有背景图片的位图。

layout.xml(仅相关部分)

<RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
    <ImageView 
        android:id="@+id/photo_mask"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@android:color/transparent" />
    <ImageView 
        android:id="@+id/photo"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

layout.java(仅相关部分)

setContentView(R.layout.layout);

ImageView image = (ImageView) findViewById(R.id.photo);
image.setImageBitmap(mSomeImage);

mMaskPaint = new Paint();
mMaskPaint.setColor(0xFF0000);
mMaskPaint.setAlpha(128);

mMaskBitmap = Bitmap.createBitmap(128, 128, Bitmap.Config.ARGB_8888);
mMaskBitmap.eraseColor(Color.TRANSPARENT);

mMaskCanvas = new Canvas(mMaskBitmap);
mMaskCanvas.drawCircle(64, 64, 10, mMaskPaint);

ImageView mask = (ImageView) findViewById(R.id.photo_mask);
image.setImageBitmap(mMaskBitmap);

注意 mSomeImage 是一个 128x128 的位图,所以它会匹配掩码位图。 我在遮罩位图中间画了一个红色圆圈,完美显示。但是,遮罩位图不会显示背景图像,而是显示黑色背景。

所以我尝试了:

  • 将 ImageView 的背景颜色设置为透明
  • 使用 .eraseColor 将遮罩位图的像素设置为透明
  • 将位图配置设置为 ARGB_8888
  • 设置蒙版 ImageView 的 alpha

这些似乎都不起作用。当我执行eraseColor(Color.BLUE) 时,背景为蓝色,中间有红色圆圈。当我设置蒙版 ImageView 的 alpha 时,背景仍然是黑色的。当我注释掉 setImageBitmap(mMaskBitmap) 时,显示背景图像。

我在这里错过了什么?

【问题讨论】:

  • 尝试将imageview遮罩背景设置为null,看看是否有效。
  • 为什么要擦除透明色?似乎掩码位图需要用红色圆圈透明。我的猜测是像素的默认值是 ff000000 - 这是黑色的。尽量不要擦除透明度。
  • eraseColor 方法实际上是用该颜色填充位图。

标签: android bitmap imageview transparency mask


【解决方案1】:

你的背景是错误的。改变

ImageView mask = (ImageView) findViewById(R.id.photo_mask);
image.setImageBitmap(mMaskBitmap);

ImageView mask = (ImageView) findViewById(R.id.photo_mask);
mask.setImageBitmap(mMaskBitmap);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多