Imageview绘图捕获不是根据需要

时间:2013-12-13 10:42:13

标签: android bitmap imageview android-framelayout drawingcache

我在框架布局中有图像视图,我在运行时在图像视图上放置了随机贴纸,但是当我使用框架布局绘图保存图像位图时,然后图像保存但不必要的黑色部分会出现在保存的图像中。{{0} }

Actual image

After save with sticker

我想要没有这个黑色部分的位图。请帮助。这是我的布局和代码。

<FrameLayout
    android:id="@+id/fl_effect_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rl_title"
    android:layout_marginBottom="83dp" >

    <ImageView
        android:id="@+id/im_gselected_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
         >
    </ImageView>
</FrameLayout>

这是我用来创建位图的代码。

FrameLayout fl=(FrameLayout) findViewById(R.id.fl_effect_view);
f1.setDrawingCacheEnabled(true);
Bitmap b=Bitmap.createBitmap(f1.getDrawingCache());
f1.setDrawingCacheEnabled(false);

1 个答案:

答案 0 :(得分:2)

尝试在获取绘图缓存之前设置视图的大小:

ImageView bottomImage = (ImageView) findViewById(R.id.im_gselected_image);
f1.layout(0, 0, bottomImage.getMeasuredWidth(), bottomImage.getMeasuredHeight());
Bitmap b=Bitmap.createBitmap(f1.getDrawingCache(true));

这将强制您的结果具有特定的大小和位置,并将裁剪超出定义范围的所有内容。

如果这对您有用,请告诉我。