Android 无法绘制位图,因为它是在画布上下载的

Android 无法绘制位图,因为它是在画布上下载的,android,image,canvas,bitmap,android-imageview,Android,Image,Canvas,Bitmap,Android Imageview,我正在从一个网站下载一幅图像,它将显示在imageview上 我希望图像在下载时显示在imageview上,并且不要等待下载整个图像。我的意思是,如果图像是10000字节,第一个要下载的字节是1024字节,那么图像应该由1024字节构成,并构成下载图像的一部分,并将其绘制在画布上 byte[] buffer =new byte[1024]; int bytesRead = -1; byte[] writtenOnes;

我正在从一个网站下载一幅图像,它将显示在imageview上

我希望图像在下载时显示在imageview上,并且不要等待下载整个图像。我的意思是,如果图像是10000字节,第一个要下载的字节是1024字节,那么图像应该由1024字节构成,并构成下载图像的一部分,并将其绘制在画布上

byte[] buffer =new byte[1024];
                int bytesRead = -1;
                byte[] writtenOnes;



                while((bytesRead = inputStream.read(buffer)) != -1){
                    fileOutputStream.write(buffer, 0, bytesRead);
                    fileOutputStream.flush();
                    filebytes = Files.toByteArray(media);
                    status = (100 * filebytes.length) / contentLength;
                    publishProgress(status);

                }
                fileOutputStream.flush();

                fileOutputStream.close();
                inputStream.close();

                if( media.length() == contentLength){
                    d(" WELL DONE, FILECOMPLETLY DOWNLOADED. SIZE IS "+ contentLength);
                }else{
                    d(" file not completely downloaded. bytes remaining "+(contentLength -media.length()));
                }
            }
            connection.disconnect();
            return  mediaFile;
        }catch(Exception exc){
            exc.printStackTrace();
            return "";
        }

    }

    protected void onProgressUpdate(Integer... status) {
        int state = status[0];
        incompleteBitmap =BitmapFactory.decodeByteArray(filebytes, 0, filebytes.length);

        d(" status is "+ state);
        canvas.drawBitmap(incompleteBitmap,0,0,new Paint(Paint.FILTER_BITMAP_FLAG));
        progressBar.setProgress(state);
    }
我无法从下载的字节创建位图。在
onProgressUpdate()
方法上尝试获取形成的位图时,我得到了一个NullpointerException


问:有什么方法可以实现这一点吗?

如果图像在您的域内,我使用支持渐进式JPEG格式的Fresco图像库获得了很好的效果。但是,如果您正在寻找一个完整的普通解决方案,或者已经在使用另一个图像视图库,或者图像和格式超出您的控制范围,则可能不需要这样做:


一切都在我的控制之下,包括图像格式和获取图像的服务器。让我试试你的解决方案,我会告诉你结果。我在通过编程设置SimpleDraweView的宽度和高度时遇到了一个问题。我在
GenericDraweeHierachy
类中没有看到任何方法,当我使用android方法时,就好像它们没有被实现一样<代码>simpledrawee.getLayoutParams().width=350。你遇到过这样的问题吗?