Android ViewPager:从URL下载图像

时间:2013-10-25 13:25:13

标签: android android-viewpager

我正在尝试使用ViewPager创建图片库。我找到了几个例子,我已经把它们全部用了。示例未显示的一件事是如何使用URL中的下载图像填充ViewPager。所有教程都将图像放在Drawables文件夹或SD卡上。有谁知道ViewPager从URL获取图像的示例。我找到了Lazy加载GridView和ListView的示例,但是我不够聪明,无法将它们转换为可用的ViewPager。我主要遇到Adapter类的问题。延迟加载示例似乎使用BaseAdapter,我认为ViewPager需要使用PagerAdapter吗?那么,是否存在从URL获取图像的ViewPager的任何示例?我需要ViewPager做的是从字符串数组中下载图像:

    String[] imageGalleryStr = {
    "http://www.website.com/images/image01.png",
    "http://www.website.com/images/image02.png",
    "http://www.website.com/images/image03.png",
    "http://www.website.com/images/image04.png",
    "http://www.website.com/images/image25.png",
    "http://www.website.com/images/image26.png",
    "http://www.website.com/images/image27.png",
    "http://www.website.com/images/image28.png" };

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

将此库用于图库{{3p>

答案 1 :(得分:1)

我建议您使用Volley库,这是Google在其应用程序Google Play中使用的相同库。请检查此答案: Getting Bitmap images from server to set on ImageView

答案 2 :(得分:1)

我没有尝试过这段代码,但希望这样的事情对你有用。 :)

@Override
public Object instantiateItem(final ViewGroup container, final int position) {
    tagShown = false;

    View view = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.image_view_item, container, false);

    imageView = (ImageView) view.findViewById(R.id.imageView);

    new DownloadImageInBackground(imageView).execute(imageGalleryStr[position]);

    ((ViewPager) container).addView(view);

    return view;
}

...

private class DownloadImageInBackground extends AsyncTask<String, Void, Bitmap>{

    ImageView iv;

    public DownloadImageInBackground(ImageView iv) {
        this.iv = iv;
    }

    @Override
    protected Bitmap doInBackground(String... params) {
        // download bitmap from string url
        return bitmap;
    }

    @Override
    protected void onPostExecute(Bitmap result) {
        super.onPostExecute(result);
        iv.setImageBitmap(result);
    }
}

答案 3 :(得分:0)

如果你已经有了一个工作模板(ViewPager),你可以选择其中一个用于从网上获取图像/位图的库,然后在ViewPager操作的Fragment类型中包装一个加载器以供图像...

当寻呼机在被寻呼的类型上调用'onCreateView'时,您会遇到类似的情况:

imgLoadr.DisplayImage(mMap.get("pic"), imgView);

您对'DisplayImage'的实现建立在众多用于联网图像管理的库之一上,并包含以下详细信息:

DisplayImage implementation looks first for a properly scaled bitmap in memory...
then it looks for a bitmap in local file system cache...
then it fetches the file from across the network and feeds the network stream to get instances of local bitmap/caches.

你的帖子只涉及上面的最后一项,但IMO你可能不得不对所有列表感兴趣,因为这只是使用以图像为中心的应用程序的一部分..

如果您打算处理大型照片专辑,您可能需要考虑有效管理每个位图并以某种方式缩放位图以减少对内存的需求。