Android 如何在图像未使用时使用截取下载图像并存储在缓存中

Android 如何在图像未使用时使用截取下载图像并存储在缓存中,android,android-volley,image-caching,networkimageview,Android,Android Volley,Image Caching,Networkimageview,我正在使用volley库下载网络响应。我知道截击只在需要的时候下载图片。但我想要实现的是一次下载所有图像并存储在缓存中 所以基本上我想一次下载所有的图片并存储在缓存中,这样如果没有interenet,用户也可以看到所有的图片 我可以使用自己的LruBitmapCache类将图像存储在缓存中 public void downloadImage(NetworkImageView view, MyApplication application, String imageUrl, Context ctx

我正在使用volley库下载网络响应。我知道截击只在需要的时候下载图片。但我想要实现的是一次下载所有图像并存储在缓存中

所以基本上我想一次下载所有的图片并存储在缓存中,这样如果没有interenet,用户也可以看到所有的图片

我可以使用自己的
LruBitmapCache
类将图像存储在缓存中

public void downloadImage(NetworkImageView view, MyApplication application, String imageUrl, Context ctx) {
    NetworkImageView image = view;
    ImageLoader loader = new ImageLoader(application.getRequestQueue(), new LruBitmapCache(
            LruBitmapCache.getCacheSize(ctx)));
    image.setImageUrl(imageUrl, loader);
}
public void downloadCoverImages(){

  int i = 0;

  for(ImageData data: GetData._instance.getImageList()){

    NetworkImageView iv = new NetworkImageView(BaseActivity.this);
    iv.setLayoutParams(new LinearLayout.LayoutParams(300,150));

    GetData._instance.downloadImage(iv, (MyApplication) getApplicationContext(),
            data.getImages().getSmallImage(),BaseActivity.this);

    //Log.e("Download",++i+" "+data.getImages().getSmallImage());
  }

}
这可以很好地下载图像并存储在缓存中。但它只是下载那些在我的主屏幕上的图片

为了下载所有的图片,我尝试了以下方法

public void downloadImage(NetworkImageView view, MyApplication application, String imageUrl, Context ctx) {
    NetworkImageView image = view;
    ImageLoader loader = new ImageLoader(application.getRequestQueue(), new LruBitmapCache(
            LruBitmapCache.getCacheSize(ctx)));
    image.setImageUrl(imageUrl, loader);
}
public void downloadCoverImages(){

  int i = 0;

  for(ImageData data: GetData._instance.getImageList()){

    NetworkImageView iv = new NetworkImageView(BaseActivity.this);
    iv.setLayoutParams(new LinearLayout.LayoutParams(300,150));

    GetData._instance.downloadImage(iv, (MyApplication) getApplicationContext(),
            data.getImages().getSmallImage(),BaseActivity.this);

    //Log.e("Download",++i+" "+data.getImages().getSmallImage());
  }

}
但这并不是为了下载一个图像,我想需要一个合适的图像视图,这也需要在主屏幕上。那么在这种情况下,我应该怎么做

我的独生子女课程如下:

public enum GetData {
    _instance;
    private List<Sections> sectionsList = new ArrayList<Sections>();
    private List<DealDetails> dealDetailsList = new ArrayList<DealDetails>();
    private DealDetails dealDetails;

    public List<Sections> getSectionsList() {
        return sectionsList;
    }

    public void setSectionsList(List<Sections> sectionsList) {
        this.sectionsList = sectionsList;
    }

    public List<DealDetails> getDealDetailsList() {
        return dealDetailsList;
    }

    public void setDealList(List<DealDetails> dealDetailsList) {
        this.dealDetailsList = dealDetailsList;
    }

    public DealDetails getDealDetails() {
        return dealDetails;
    }

    public void setDealDetails(DealDetails dealDetails) {
        this.dealDetails = dealDetails;
    }


    public void downloadImage(NetworkImageView view, MyApplication application, String imageUrl, Context ctx) {
        NetworkImageView image = view;
        ImageLoader loader = new ImageLoader(application.getRequestQueue(), new LruBitmapCache(
                LruBitmapCache.getCacheSize(ctx)));
        image.setImageUrl(imageUrl, loader);
    }
}
public enum GetData{
_实例;
私有列表部分列表=新的ArrayList();
私有列表dealDetailsList=new ArrayList();
私人交易详情;
公共列表getSectionsList(){
返回段列表;
}
公共无效设置分区列表(列表分区列表){
this.sectionsList=sectionsList;
}
公共列表getDealDetailsList(){
返回dealDetailsList;
}
公共无效集合DealList(列表dealDetailsList){
this.dealDetailsList=dealDetailsList;
}
公共DealDetails getDealDetails(){
退货详情;
}
公共无效setDealDetails(DealDetails DealDetails){
this.dealDetails=dealDetails;
}
public void downloadImage(NetworkImageView视图、MyApplication应用程序、字符串imageUrl、上下文ctx){
NetworkImageView图像=视图;

ImageLoader=新的ImageLoader(application.getRequestQueue(),新的lRubitMacache( LruBitmapCache.getCacheSize(ctx)); setImageUrl(imageUrl,加载器); } }

如果我不使用截击下载图像并存储在我的LRUCache中并使用截击显示它,是否可能?有什么好的教程吗?Thnaks.

您还可以使用volley imageloader获取远程图像的位图。。这样,您就不需要使用imageview和其他所有工具

imageLoader.get(data.getImages().getSmallImage(), new ImageLoader.ImageListener() {
        @Override
        public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {

        }

        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });

从volley singleton类获取imageloader实例。在您的情况下,您不需要处理imagelistener回调。

是的,但我担心的是我正在缓存中存储图像。现在它正在检查缓存中的imageurl。你能建议我如何用这个方法实现我自己的缓存吗?我已经更新了它。这只是一个普通的单例类。@kunu为什么需要自己的缓存?。。一次性下载和缓存图像?因为我理解的是Volley不提供图像缓存。因此,您只能自己实现。ImageLoader=newImageLoader(application.getRequestQueue(),new lRubitMacache(lRubitMacache.getCacheSize(ctx));在这一行中,LruBitmapCache仅用于缓存。。volley提供位图内存缓存支持。。