Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 下载并显示缩略图_Android - Fatal编程技术网

Android 下载并显示缩略图

Android 下载并显示缩略图,android,Android,我尝试从URL下载图片到SD卡/下载。 我尝试在imageview中显示它的缩略图。 现在我有以下代码: try { Download(URL); //download picture to SD card/Download File myfile = new File(Environment.getExternalStorageDirectory() + "/Download/", filename); Drawable photo = null; photo = Drawable.cre

我尝试从URL下载图片到SD卡/下载。 我尝试在imageview中显示它的缩略图。 现在我有以下代码:

try {
Download(URL);  //download picture to SD card/Download
File myfile = new File(Environment.getExternalStorageDirectory() + "/Download/", filename);
Drawable photo = null; 
photo = Drawable.createFromPath(myfile.getPath());
imageview.setBackgroundDrawable(photo);
}
它显示了原图。 但是当图片很大的时候。 出现内存错误。 所以我想展示一张小一点的图片。 我应该如何生成缩略图并显示它?
或者如何使用Android系统生成的缩略图?

使用位图,例如

    try     
    {
        Download(URL);  //download picture to SD card/Download

        final int THUMBNAIL_SIZE = 64;

        FileInputStream fis = new FileInputStream(Environment.getExternalStorageDirectory() + "/Download/", filename);
        Bitmap imageBitmap = BitmapFactory.decodeStream(fis);

        imageBitmap = Bitmap.createScaledBitmap(imageBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE, false);
        imageview.setImageBitmap(imageBitmap);

    }
    catch(Exception ex) {

    }
从显示的代码

试着用这个代替你的最后两行

Bitmap photo = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(myfile.getPath()),60,60,true);
imageview.setImageBitmap(photo);
如果您在
Download()
函数中为位图/String/Stream创建了任何对象,请调用
System.gc()释放它们


我希望这能奏效。

您是否尝试过调整ImageView的大小和ScaleType?System.gc()应该在哪里;放置?在下载代码中..以及您在何处创建和使用保存图像数据的对象..并使用内存..在使用这些对象之后..调用gc()让我告诉您..调用System.gc())这并不意味着您的内存会立即被释放…它只会向操作系统发出一个标志,表明这里有未使用的内存…并且在垃圾收集器运行时内存会被释放..这是自动完成的,因此您无法控制它..但您可以直接标记它。