Android 如何在图像未使用时使用截取下载图像并存储在缓存中
我正在使用volley库下载网络响应。我知道截击只在需要的时候下载图片。但我想要实现的是一次下载所有图像并存储在缓存中 所以基本上我想一次下载所有的图片并存储在缓存中,这样如果没有interenet,用户也可以看到所有的图片 我可以使用自己的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
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提供位图内存缓存支持。。