3

我正在尝试使用ViewPager. 我找到了几个例子,我已经让它们全部工作了。示例未显示的一件事是如何使用从 URL 下载的图像填充 ViewPager。所有教程都在Drawables文件夹中或 SD 卡上包含图像。有谁知道 ViewPager 从 URL 获取图像的示例。我找到了延迟加载 GridView 和 ListView 的示例,但我不够聪明,无法将它们转换为工作的 ViewPager。我主要遇到适配器类的问题。延迟加载示例似乎使用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

4 回答 4

4

将此库用于图像库https://github.com/nostra13/Android-Universal-Image-Loader

于 2013-10-25T13:26:57.813 回答
2

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

@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);
    }
}
于 2013-10-25T13:43:05.410 回答
1

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

于 2013-10-25T13:31:20.933 回答
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 您可能必须对所有列表感兴趣,因为这只是使用以图像为中心的应用程序的一部分。

如果您要处理大型相册,您可能必须考虑有效地管理每个位图并以某种方式缩放位图以减少对内存的需求。

于 2013-10-25T14:14:19.783 回答