我正在尝试在下载前通过网络上的图像进行缩略图预览,这意味着我在RecyclerView
上有更多项目,我正在尝试从图像中查看简单的模糊预览,但我不知道什么是解决方案,我使用下面的代码,但我认为这段代码下载完整的图像,如社交应用程序,如whatsApp或Telegram如何在网上制作预览图像并向用户显示?
new Thread(new Runnable() {
@Override
public void run() {
//First create a new URL object
URL url = null;
try {
if (checkNetWorkConnection()) {
url = new URL("http://wallpaperwarrior.com/wp-content/uploads/2016/09/Wallpaper-2.jpeg");
//Next create a file, the example below will save to the SDCARD using JPEG format
File file = new File(APP.DIR_APP + APP.IMAGE + "/" + "Wallpaper-2.jpg");
//Next create a Bitmap object and download the image to bitmap
Bitmap bitmap = BitmapFactory.decodeStream(url.openStream());
//Finally compress the bitmap, saving to the file previously created
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, new FileOutputStream(file));
}
} catch (MalformedURLException e) {
e.printStackTrace();
Log.e("Error ", e.getMessage());
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.e("Error ", e.getMessage());
} catch (IOException e) {
e.printStackTrace();
Log.e("Error ", e.getMessage());
}
}
}).start();
答案 0 :(得分:0)
您可以尝试使用此zoom effect。它被许多应用程序使用。通过该示例,您可以创建自己的背景,如全屏黑色背景,但您需要自己实现,这非常简单,但有很多工作要做。
除了为什么不尝试使用Glide或Picasso下载和显示图片?它可以帮助您节省大量工作,如缓存,下载asyncs,调整大小等。
当您使用图像时,尤其是使用recycleview或listview时,您需要始终记住一些问题。每次你滚动listView / RecycleView它实际上都会重新下载图像,所以你必须真正检查它已经存在于你的SD卡中以避免这个问题旁边有更好的缓存是内存虽然你已经将它保存在SD卡但仍然您可以通过将其缓存在内存中来避免内存崩溃。通过使用我向您展示的任何一个库来完成那些艰苦的工作。
答案 1 :(得分:0)
你可以使用picasso lib。
Picasso
.with(context)
.load("http://wallpaperwarrior.com/wp-content/uploads/2016/09/Wallpaper-2.jpeg")
.resize(600, 200)
.centerInside()
.into(imageViewResizeCenterInside);
您可以使用毕加索的Transformation api为图像赋予圆形形状 请参阅此Picasso