【问题标题】:How to use Universal Image Loader如何使用通用图像加载器
【发布时间】:2012-12-01 00:07:25
【问题描述】:

我有一个要求,我需要在ListView 中加载缩略图和Text,它由自定义Adapter 设置。缩略图应该存储在缓存中,因为我使用的是通用图像加载器,但是我对它的实现以及如何根据我的要求使用它从@加载ListView中的图像感到非常困惑987654325@。请建议我一些实施良好的方法。

【问题讨论】:

    标签: android android-listview android-image android-adapter


    【解决方案1】:

    将下面的代码行写入适配器的 getView() 方法,这里 imageUrls[position] 是 Image Urls 的数组, holder.image 是 imageview。

    imageLoader.displayImage(imageUrls[position], holder.image, null);
    

    并将下面的代码行写入您的适配器构造函数。

    ImageLoader imageLoader=new  ImageLoader(activity.getApplicationContext());
    

    它将解决您的问题,如果您对此有任何疑问,请告诉我。

    Universal Image Loader Example 的完整源代码请参见下面的链接。

    Android - Universal Image Loader

    【讨论】:

    【解决方案2】:

    在你的适配器的 oncreate() 中定义

     ImageLoader imageLoader=new  ImageLoader(activity.getApplicationContext());
    

    并在 getView() 方法中使用它:

    imageLoader.DisplayImage(//your image url, //your imageView);
    

    【讨论】:

      【解决方案3】:

      我会建议你使用 AQuery - (Android-Query) - 一个超级简单的 Android UI 操作框架。

      AQuery 以库的形式出现,您需要将其包含在构建路径中。

      在 AQuery 中,您可以使用以下代码下载、显示(带有效果)和缓存图像(在内存和磁盘中):

      AQuery aq = new AQuery(yourActivity.this);
      boolean memCache = true;
      boolean fileCache = true;
      aq.id(R.id.image1).image("http://www.example.com/image.jpg", memCache, fileCache);
      

      AQuery 将处理所有数据下载过程,并将在您提供的 ImageView 上显示图像。加载图像后,它将根据布尔参数memCachefileCache 缓存在内存(或磁盘)中。下一次,它会从内存缓存或文件缓存中加载图像。

      有关更多信息和示例,您应该访问 AQuery 项目http://code.google.com/p/android-query/

      更多关于图像加载的代码 - http://code.google.com/p/android-query/wiki/ImageLoading

      【讨论】:

      • 好的,我会尝试,但它会给出任何类型的内存不足错误,因为服务器上的图像分辨率非常高。
      • @NitinBathija 如果图像太大,那么应该有一些实现来减小尺寸并将其传送到手机。将 15 兆像素的图像传送到 320x240 像素的屏幕不是一个好主意 - 而是调整它的大小并传送 - 您将节省数据计划和磁盘空间!
      • 我在以前的项目中也使用过 android 查询,但在这种情况下无法找到使用它的方法stackoverflow.com/q/16456812/1503130
      【解决方案4】:

      这将帮助您使用通用图像加载器加载 imageurl,它将给出 imageurl 的状态是开始加载、完成或失败,并且请求是取消状态也提供。我希望它可以帮助你..

       public void ImageLoaderListener(String url){
      
              imageLoader.loadImage(url,new ImageLoadingListener(){
                  @Override
                  public void onLoadingStarted(String imageUri, View view) {
                      Log.e("tag", "onLoadingStarted");
                  }
      
                  @Override
                  public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                      Log.e("tag", "onLoadingFailed");
                  }
                  @Override
                  public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                      Log.e("tag", "onLoadingComplete");
                      imageView.setImageBitmap(loadedImage);
                  }
                  @Override
                  public void onLoadingCancelled(String imageUri, View view) {
                      Log.e("tag", "onLoadingCancelled");
                  }
              });
          }
      

      如果您想缓存图像,请在下面添加此功能...但是要在创建时启动,因为它非常高...

       ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
                  .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
                  .build();
      
          imageLoader = ImageLoader.getInstance();
      
          if (!imageLoader.isInited()) {
              imageLoader.init(config);
          }
          defaultOptions = new DisplayImageOptions.Builder()
                  .cacheInMemory(true)
                  .cacheOnDisc(true)
                  .build();
      

      然后你将添加 ImageLoadingListener() 函数...

      public void ImageLoaderListener(String url){
        imageLoader.loadImage(url, defaultOptions, new ImageLoadingListener() {
      

      【讨论】:

        【解决方案5】:
        public class CategoryModel 
        {
                String CatId;
                String CatName;
                String Image;
                String Price;
                Bitmap ImgSrc;
                CategoryAdapter Ma;
                public CategoryModel()
                {
                }
                public CategoryModel(String catid,String catname,String image,String price)
                {
                    this.CatId = catid;
                    this.CatName = catname;
                    this.Image = image;
                    this.Price = price;
                }
                public CategoryModel(String catname,String image,String price)
                {
                    this.CatName = catname;
                    this.Image = image;
                    this.Price = price;
                }
                public void setCatId(String catid)
                {
                    this.CatId =catid;
                }
                public String getCatId()
                {
                    return this.CatId;
                }
                public void setCatName(String catname)
                {
                    this.CatName=catname;
                }
                public String getCatName()
                {
                    return this.CatName;
                }
                public void setImage(String image)
                {
                    this.Image=image;
                }
                public String getImage()
                {
                    return this.Image;
                }
                public void setPrice(String price)
                {
                    this.Price=price;
                }
                public String getPrice()
                {
                    return this.Price;
                }
                public Bitmap getImagesrc()
                {
                    return this.ImgSrc;
                }
                public void setAdapter(CategoryAdapter adf)
                {
                    this.Ma = adf;
                }
                public CategoryAdapter getAdapter()
                {
                    return this.Ma;
                }
        
                public void LoadImage(CategoryAdapter adap)
                {
                    this.Ma = adap;
                    if(Image != null && !Image.equals(""))
                    {
                        new ImageLoader().execute(new String[]{ Image });
                    }
                }
                public static Bitmap getBitmapUrl(String src)
                {
                    try
                    {
                        URL url = new URL(src);
                        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                        connection.setDoInput(true);
                        connection.connect();
                        InputStream input = connection.getInputStream();
                        Bitmap mybitmap = BitmapFactory.decodeStream(input);
                        connection.disconnect();
                        return mybitmap;
                    }
                    catch (Exception e) {
                        return null;
                    }
                }
                private class ImageLoader extends AsyncTask<String, String, Bitmap>
                {
                    @Override
                    protected void onPreExecute()
                    {
                    }
                    @Override
                    protected Bitmap doInBackground(String... params) {
                        try
                        {
                            Bitmap b = getBitmapUrl(params[0]);
                            return b;
                        }
                        catch (Exception e)
                        {
                            Log.e("Excep", e.toString());
                            return null;
                        }
                    }
                    @Override
                    protected void onPostExecute(Bitmap res)
                    {
                        if(res!=null)
                        {
                            ImgSrc = res;
                            if(Ma!=null)
                            {
                                Ma.notifyDataSetChanged();
                            }
                        }
                        else
                        {
                            Log.e("Error", "Image not Loading");
                        }
                    }
                }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-03-19
          • 2016-06-23
          • 2013-09-16
          • 2014-12-28
          • 2016-06-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多