在Android中清除位图

Kir*_*ill 4 android bitmap xamarin

我使用位图和画布创建第一个图表.如何清除位图以绘制新图表?

ImageView imageView = new ImageView(this);
Bitmap bitmap = Bitmap.CreateBitmap(w, h, Bitmap.Config.Argb8888);
Canvas canvas = new Canvas(bitmap);
...
imageView.SetImageBitmap(bitmap);
relativeLayout.AddView(imageView);
Run Code Online (Sandbox Code Playgroud)

Jib*_*haᴎ 24

您可以使用eraseColor位图将其颜色设置为透明.它可以再次使用而无需重新创建它.

bitmap.eraseColor(Color.TRANSPARENT);
Run Code Online (Sandbox Code Playgroud)

进一步阅读这里


Hir*_*tel 6

ImageView imageView = new ImageView(this);
Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
    // Your Other code
imageView.setImageBitmap(bitmap);
relativeLayout.AddView(imageView);
Run Code Online (Sandbox Code Playgroud)

现在通过以下代码释放位图的内存

bitmap.recycle();
Run Code Online (Sandbox Code Playgroud)

帮助再循环()方法的位图

API 1级中添加的public void recycle()释放与此位图关联的本机对象,并清除对像素数据的引用。这将不会同步释放像素数据。如果没有其他引用,它只是允许对其进行垃圾收集。该位图被标记为“死”,这意味着如果调用getPixels()或setPixels()它将抛出异常,并且不会绘制任何内容。此操作不能撤消,因此只有在您确定该位图没有其他用途时,才应调用它。这是一个高级调用,通常不需要调用,因为当不再有对该位图的引用时,正常的GC进程将释放此内存。