【问题标题】:Android Universal Image Loader store downloaded progress listviewAndroid Universal Image Loader 商店下载进度列表视图
【发布时间】:2014-11-27 06:14:53
【问题描述】:

我在 ListView 中使用Universal Image Loader。我的问题在于以下用例:

当我在列表视图上滚动时,它可以完美运行,并加载所有图像。假设,我在列表视图的屏幕上有 2 个项目,它们正在下载中。我可以通过ImageLoadingProgressListener() 看到它的进度,当我滚动到任何地方并返回相同的图像时,进度又开始了,以前下载的数据丢失了!!有什么方法可以存储下载的进度,以便稍后我们在列表视图中返回该图像时可以恢复该过程。

编辑:我可以在下载这些图像后缓存它们,也可以使用这些缓存的图像,我的问题是在下载、滚动和返回的时间。

我的DisplayImageOptions

options =  new DisplayImageOptions.Builder()
                    .displayer(new RoundedBitmapDisplayer(100))
                    .cacheInMemory(true)
                    .cacheOnDisk(true)
                    .considerExifParams(true)
                    .bitmapConfig(Bitmap.Config.RGB_565)
                    .build();

我的ImageLoaderConfiguration

new ImageLoaderConfiguration.Builder(context)
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .denyCacheImageMultipleSizesInMemory()
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                .diskCacheSize(50 * 1024 * 1024) // 50 Mb
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .writeDebugLogs() // Remove for release app
                .build();

我的getView()

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder;

        if(convertView == null){

            convertView = inflater.inflate(R.layout.card, parent,false);

            holder = new ViewHolder();

            holder.ivContent = (ImageView) convertView.findViewById(R.id.ivContent);

            convertView.setTag(holder);
        }
        else{
            holder = (ViewHolder) convertView.getTag();
        }
        try {
            ImageLoader.getInstance().displayImage(url, holder.ivContent, options, new        SimpleImageLoadingListener(){
                @Override
                public void onLoadingComplete(String imageUri, View view,Bitmap loadedImage){
                    holder.ivContent.setVisibility(View.VISIBLE);
                }
            },
            new ImageLoadingProgressListener() {
                @Override
                public void onProgressUpdate(String arg0, View arg1, int count, int total) {
                    System.out.println("prog: "+(count*100)/total);
                    //holder.ivLoaderUp.setClipping((count*100)/total);
                }
            });
         }   
         catch (ParseException e) {
             e.printStackTrace();
         }
        return convertView;
   }

有没有人遇到过这个问题,请帮忙

【问题讨论】:

    标签: android android-listview universal-image-loader


    【解决方案1】:

    您可以找到重新开始加载的答案 - here。如果加载的图像数据少于 75%,UIL 会中止下载。如果你想改变它,那么你应该改变IoUtil 类的来源。更改常量来自:

    public static final int CONTINUE_LOADING_PERCENTAGE = 75;
    

    public static final int CONTINUE_LOADING_PERCENTAGE = 0;
    

    【讨论】:

    • 该解决方案对我有用!非常感谢。建议:1)在这里有一些 Setter 方法会很好。 2)我的用例:如果我们滚动然后,该进度停止(保存)并且另一个开始。当我们回来时,它会恢复。无论如何,我们感谢您的努力!
    【解决方案2】:

    使用最新版本的图像加载器库,但我建议您尝试使用智能图像,您只需从以下 URL 下载库 http://www.4shared.com/folder/iw0vL8m6/_online.html 将此 jar 文件放在您的 Android 应用程序的 libs/ 文件夹中。

    将 SmartImageView 添加到 Activity 的 xml 布局中:

    <com.loopj.android.image.SmartImageView
        android:id="@+id/my_image" />
    

    在你的Activity

    SmartImageView myImage = (SmartImageView) this.findViewById(R.id.my_image);
    

    将图像从 URL 加载到视图中:

    myImage.setImageUrl("http://www.YOUR_URL/myawesomeimage.jpg");
    

    它是我使用图像加载器最好的一个,但这个库是高效的。

    【讨论】:

    • 好的,我要试试这个,稍后会发布我的回复。谢谢。
    • 你会喜欢的。它是成熟而简单的库之一。
    【解决方案3】:

    我建议您为此尝试 AQuery。

    您可以从here下载jar文件,下载jar文件并将jar设置为您的构建路径。

     AQuery androidAQuery=new AQuery(this);
    

    以直接从url加载图片为例:

    androidAQuery.id(ucover).image(user_pro, true, true); // Here, true, true means fileCache and MemoryCache respectively. So you can store it in memory or in file, so each and every time it will not downloaded.
    

    【讨论】:

    • 我很想试试这个,但是如果您对 UIL 有任何建议,不胜感激!
    • 不,我从来没有用过,因为它不是在所有情况下都很好,但是AQuery很庞大,所以我从来没有用过,所以对UIL一无所知。
    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    相关资源
    最近更新 更多