如何将LinearLayout转换为图像并保持透明背景

3

我有一个LinearLayout,我想将其转换为图像,但是当将其转换为位图时,背景失去了透明度。因此,我必须将其转换为png图像,并使用alpha等于零的透明背景来强制执行此操作,但只有部分透明。该图像仅在白纸上完全透明,如果纸张是有色的,则图像部分透明。我使用iText创建图像。

   mLinearLayout.setDrawingCacheEnabled(true);

    mLinearLayout.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
            View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));

     mLinearLayout.layout(0, 0,  642,  400);


    mLinearLayout.buildDrawingCache(true);

    mBitmapLayoutPreview = Bitmap.createBitmap(mLinearLayout.getDrawingCache());
    mLinearLayout.setDrawingCacheEnabled(false); //lose transparency


    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    mBitmapLayoutPreview.compress(Bitmap.CompressFormat.PNG, 100 , stream);
    Canvas canvas = new Canvas(mBitmapLayoutPreview);
    canvas.drawColor(Color.TRANSPARENT);

    final Paint paint = new Paint();
    paint.setAlpha(0);
    canvas.drawBitmap(mBitmapLayoutPreview, 0, 0, paint);
    Image myImg = Image.getInstance(stream.toByteArray()); //is only partially transparent

我发现我的Img中的颜色空间为3时会导致部分透明。我正在使用iText创建PDF文件。


如果您注释掉这一行代码 "canvas.drawBitmap(mBitmapLayoutPreview, 0, 0, paint);",那么您的线性布局是透明的还是已经部分透明了? - MyWay
已经部分透明 - Ortensia C.
1个回答

2

我没有使用Canvas,但我设置了BackgroundColor Transparent

    mLinearLayout.setBackgroundColor(Color.TRANSPARENT);
    mLinearLayout.setDrawingCacheEnabled(true);

    mLinearLayout.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
            View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));


    mLinearLayout.layout(0, 0,  642,  400);

    mLinearLayout.buildDrawingCache(true);
    Log.i(TAG, "The color of background is: " +mCardLayout.getAlpha());

    mBitmapLayoutPreview = Bitmap.createBitmap(mLinearLayout.getDrawingCache());


    mLinearLayout.setDrawingCacheEnabled(false); // clear drawing cache

mBitmapLayoutPreview 是我的 LinearLayout,背景为透明的。


你开发安卓应用有多长时间了? - Piyush
1
好的,很酷。听到这个消息很高兴! - Piyush

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