3
/**
 * @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、 を半透明にしImageViewます。Bitmap

Bitmap newBitmap = adjustOpacity(orignalBitmap, 10);
view.setImageBitmap(newBitmap);
view.setBackgroundColor(Color.WHITE);

ただし、Imageview白ではない前に、より暗く表示します。で半透明 (白い背景) の Imageview を作成するにはどうすればよいBitmapですか?

4

6 に答える 6

4

これを試して。setAlpha は 0 ~ 255 の範囲にあることにも注意してください

//bmp is your Bitmap object

BitmapDrawable bd = new BitmapDrawable(bmp);
bd.setAlpha(50);

ImageView v = (ImageView) findViewById(R.id.image);
v.setImageDrawable(bd);
于 2013-02-26T12:18:51.313 に答える
2

既存のビットマップを透明にするのは簡単すぎます。

さらに描画する前にビットマップを透明にしたい場合は、これに従ってください。

あなたのビットマップがmBitmapの場合は、次を使用してください:-

mBitmap.eraseColor(Color.TRANSPARENT) 

それでおしまい。幸運を !!

于 2020-06-18T10:01:59.823 に答える
1

メソッドを追加

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); 

}

あなたのイベント:

bmp = makeTransparentBitmap( bmp, 122 );
DrawView.invalidate();

DrawView

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

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

ここでこの答えを見つけました

于 2020-01-28T21:23:48.310 に答える
0

コンストラクターが非推奨であることを除いて、@akayaの答えは正しい方法です。API 4 以降の新しい使用方法は次のとおりです。

BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap);
drawable.setAlpha(100);
于 2014-11-22T13:51:53.667 に答える
0

これを試して、

newBitmap.setImageResource(android.R.color.transparent);
于 2013-02-26T08:06:10.067 に答える