首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使位图变得透明?

如何使位图变得透明?
EN

Stack Overflow用户
提问于 2013-02-26 16:00:24
回答 6查看 32.6K关注 0票数 3
代码语言:javascript
运行
复制
/**
 * @param bitmap
 *            The source bitmap.
 * @param opacity
 *            a value between 0 (completely transparent) and 255 (completely
 *            opaque).
 * @return The opacity-adjusted bitmap. If the source bitmap is mutable it
 *         will be adjusted and returned, otherwise a new bitmap is created.
 *         Source : http://stackoverflow.com/questions/7392062/android-
 *         semitransparent-bitmap-background-is-black/14858913#14858913
 */
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;
}

使用adjustOpacity,我使ImageViewBitmap是半透明的。

代码语言:javascript
运行
复制
Bitmap newBitmap = adjustOpacity(orignalBitmap, 10);
view.setImageBitmap(newBitmap);
view.setBackgroundColor(Color.WHITE);

但是,Imageview在不变白之前表现出更深的颜色。如何用Bitmap制作半透明(白色背景)的图像视图

EN

Stack Overflow用户

发布于 2020-01-29 05:23:48

Add方法

代码语言:javascript
运行
复制
Bitmap bmp; DrawView DrawView;

private static Bitmap makeTransparentBitmap(Bitmap bmp, int alpha) {
        Bitmap transBmp = Bitmap.createBitmap(bmp.getWidth(),
                bmp.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(transBmp);
        final Paint paint = new Paint();
        paint.setAlpha(alpha);
        canvas.drawBitmap(bmp, 0, 0, paint);
        return transBmp;
    }


@Override
protected void onDraw(Canvas canvas) {
    canvas.drawColor(Color.rgb(43,44,45));

    bmp = BitmapFactory.decodeResource(getResources(), R.drawable.mouse);
    canvas.drawBitmap(bmp, pos_x, pos_y, null); 

}

您的活动:

代码语言:javascript
运行
复制
bmp = makeTransparentBitmap( bmp, 122 );
DrawView.invalidate();

DrawView

代码语言:javascript
运行
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    DrawView = new DrawView(this);
    setContentView( DrawView );
}

我找到了这个答案here

票数 1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15084128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档