位图可以指向另一个位图吗?

时间:2013-05-03 19:51:56

标签: android bitmap imageview

我有一个位图下载程序类,它将流解码为Bitmap对象。

我可以做点什么吗

Bitmap bitmap;

bitmap = object;

当我imageview.setImageBitmap(bitmap)时 与imageview.setImageBitmap(object)

相同

另外,创建多个位图实例是否可行?像:

for(i = 0; i < 10; i++) { 
    Bitmap bitmap = new Bitmap();  // how to do this? 
    new BitmapDownloaderAsynctask(bitmap).execute(url); 
}

1 个答案:

答案 0 :(得分:1)

  

当我做imageview.setImageBitmap(位图)与imageview.setImageBitmap(object)相同

是的,它会是相同的(只要objectBitmap的另一个实例)

为了手动创建Bitmap,存在一堆静态方法Bitmap.createBitmap()来创建位图(Bitmap class

例如,这是创建位图的最简单方法:

Bitmap bmp = Bitmap.createBitmap(100, 100, Config.ARGB_8888); //100*100 bitmap in ARGB color space

修改

如果您需要保持位图引用不变,则需要在单独的位图中解码流,然后将此位图的内容复制到原始的bitmapHolder中。您可以通过在画布上绘图来实现:

AsyncTask代码:

.....

Canvas canvas = new Canvas(bitmapHolder); //this bitmap was passed to AsyncTask
Bitmap tmpBitmap = Bitmap.decodeStream(...);

canvas.drawBitmap(tmpBitmap, 0, 0, null); //this will copy your decoded bitmap into your original bitmap which was passed into AsyncTask

.....