我正在学习一个学校的android项目。 我需要一个下载图片的下载按钮(当我们上课时) 然后在另一个活动中显示它(即使在离线模式下,也在退出后)
我已尝试过毕加索,但我无法将其保存并在离线模式下使用。
答案 0 :(得分:2)
为了支持离线模式,您需要将图像保存在磁盘上,因为清除缓存后,图像也会被清除。
您可以轻松使用Glide解决此问题,也可以存储在设备上并检索
您可以在此处了解有关Glide的更多信息http://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en
/** Download the image using Glide **/
Bitmap theBitmap = null;
theBitmap = Glide.
with(YourActivity.this).
load("Url of your image").
asBitmap().
into(-1, -1).
get();
saveToInternalStorage(theBitmap, getApplicationContext(), "your preferred image name");
/** Save it on your device **/
public String saveToInternalStorage(Bitmap bitmapImage, Context context, String name){
ContextWrapper cw = new ContextWrapper(context);
// path to /data/data/yourapp/app_data/imageDir
String name_="foldername"; //Folder name in device android/data/
File directory = cw.getDir(name_, Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,name);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
Log.e("absolutepath ", directory.getAbsolutePath());
return directory.getAbsolutePath();
}
/** Method to retrieve image from your device **/
public Bitmap loadImageFromStorage(String path, String name)
{
Bitmap b;
String name_="foldername";
try {
File f=new File(path, name_);
b = BitmapFactory.decodeStream(new FileInputStream(f));
return b;
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
return null;
}
/** Retrieve your image from device and set to imageview **/
//Provide your image path and name of the image your previously used.
Bitmap b= loadImageFromStorage(String path, String name)
ImageView img=(ImageView)findViewById(R.id.your_image_id);
img.setImageBitmap(b);
答案 1 :(得分:0)
您可以使用名为通用图片加载器的Android库:
答案 2 :(得分:0)
感谢@Droidman: How to download and save an image in Android
当然,您可以自己执行下载和管理图像, 但如果你的项目已经相当复杂,那么有很多 库周围,你不需要重新发明轮子。我没赢 这次发布代码,因为有很多例子,但我要去 告诉你有关图像的2个最有用的库(IMO) 下载。
1)Android排球。 Google和Google创建的强大网络库 官方文件涵盖。发布或获取数据,图像, JSON - 凌空将为您管理它。使用凌空只为图像 在我看来,下载有点矫枉过正。2)毕加索
图像下载和缓存,非常适合 的ListView / GridView的/ RecyclerView。 Apache 2.0许可证。
3)Fresco
由Facebook创建的新图像加载库。进步 JPEG流媒体,GIF等。 Apache 2.0