本文根据该博主http://blog.csdn.net/cctcc/article/details/50127039,而来,很大部分是该博主的,自己一点的需要不一样,做了一点修改。

主要是在viewpager在显示各个图片时,底部加文字说明

网络加载图片,采用universalimageloader;

相关的布局fragment_image_pager.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="10dp" ><android.support.v4.view.ViewPagerandroid:id="@+id/imagePager"android:layout_width="wrap_content"android:layout_height="wrap_content" /><!-- 下面显示的圆点 --><LinearLayoutandroid:id="@+id/dotsImg"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="bottom|center_horizontal"android:gravity="center_horizontal"android:orientation="horizontal" android:layout_marginBottom="8dp"></LinearLayout>
</FrameLayout>

item_image_viewpager.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="1dip" ><ImageViewandroid:id="@+id/image"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center"android:adjustViewBounds="true"android:contentDescription="@string/action_settings" android:layout_marginBottom="35dp"/><ProgressBarandroid:id="@+id/loading"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:visibility="gone" /><TextViewandroid:id="@+id/voice_time"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:text="dfffffffffff"android:textColor="@color/white" android:layout_marginBottom="45dp"/><TextViewandroid:id="@+id/voice_place"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom"android:layout_marginBottom="25dp"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:layout_marginTop="5dp"android:text="vvvvvvvvvvvvvvvv"android:textColor="@color/white" /></FrameLayout>
public class ImagePagerActivityFragment extends Fragment {  ViewPager pager;  LinearLayout dotimgs;  private ImageView dotView;  private ImageView[] dotsViews;  private  String[] IMAGE_TIME=null;private  String[] IMAGE_LOCATION=null;private   String[] IMAGE_URLS = null;  private  int pos=0;  ImageAdapter imageAdapter;  public ImagePagerActivityFragment() {  }  public  void setPhotos(String[] photos){  IMAGE_URLS=photos;  }  public  void setPhotosTime(String[] time){  IMAGE_TIME=time;  }  public  void setPhotosLocation(String[] location){  IMAGE_LOCATION=location;  }  public  void setPosition(int i){  pos=i;  }  @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {  View rootView = inflater.inflate(R.layout.fragment_image_pager, container, false);  pager = (ViewPager) rootView.findViewById(R.id.imagePager);  dotimgs=(LinearLayout)rootView.findViewById(R.id.dotsImg);  imageAdapter=new ImageAdapter(getActivity(), IMAGE_URLS,IMAGE_TIME,IMAGE_LOCATION);  pager.setAdapter(imageAdapter);  pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {  @Override  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {  }  @Override  public void onPageSelected(int position) {  // TODO Auto-generated method stub  for (int i = 0; i < dotsViews.length; i++) {  dotsViews[position].setBackgroundResource(R.drawable.ic_about);  if (position != i) {  dotsViews[i].setBackgroundResource(R.drawable.ic_pass_un_select);  }  }  }  @Override  public void onPageScrollStateChanged(int state) {  }  });  //pager.setCurrentItem(pos);  pager.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {  @Override  public boolean onPreDraw() {  pager.getViewTreeObserver().removeOnPreDrawListener(this);  if (pos==0) {  } else {  pager.setCurrentItem(pos);  }  return true;  }  });  dotsViews = new ImageView[IMAGE_URLS.length];  for(int i =0;i<IMAGE_URLS.length;i++){  dotView = new ImageView(getActivity());  dotView.setLayoutParams(new LinearLayout.LayoutParams(20,20));  dotView.setPadding(20, 0, 20, 0);  dotsViews[i] = dotView;  //默认第一张图显示为选中状态  if (i == 0) {  dotsViews[i].setBackgroundResource(R.drawable.ic_about);} else {  dotsViews[i].setBackgroundResource(R.drawable.ic_pass_un_select);  }  dotimgs.addView(dotsViews[i]);  }  return rootView;  }  private static class ImageAdapter extends PagerAdapter {  private LayoutInflater inflater;  private DisplayImageOptions options;  private String[] photours;private String[] photourTime;private String[] photourLoaction;ImageAdapter(Context context,String[] pts,String[] time,String[] location) {  inflater = LayoutInflater.from(context);  photours=pts;  photourTime=time;photourLoaction=location;options = new DisplayImageOptions.Builder()  .showImageForEmptyUri(R.drawable.plugin_camera_no_pictures)  .showImageOnFail(R.drawable.ic_picture_loadfailed)  .resetViewBeforeLoading(true)  .cacheOnDisc(true)  .imageScaleType(ImageScaleType.EXACTLY)  .bitmapConfig(Bitmap.Config.RGB_565)  .considerExifParams(true)  .displayer(new FadeInBitmapDisplayer(300))  .build();  }  @Override  public void destroyItem(ViewGroup container, int position, Object object) {  container.removeView((View) object);  }  @Override  public int getCount() {  return photours.length;  }  @Override  public Object instantiateItem(ViewGroup view, int position) {  View imageLayout = inflater.inflate(R.layout.item_image_viewpager, view, false);  assert imageLayout != null;  final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);  TextView tvTime = (TextView)imageLayout.findViewById(R.id.voice_time);TextView tvAddress = (TextView)imageLayout.findViewById(R.id.voice_place);if(photourTime[position]!=null){tvTime.setVisibility(View.VISIBLE);tvTime.setText("时间:"+photourTime[position]);}else{tvTime.setVisibility(View.GONE);}if(photourLoaction[position]!=null){tvAddress.setVisibility(View.VISIBLE);tvAddress.setText("地址:"+photourLoaction[position]);}else{tvAddress.setVisibility(View.GONE);}final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);  ImageLoader.getInstance().displayImage(photours[position], imageView, options, new SimpleImageLoadingListener() {  @Override  public void onLoadingStarted(String imageUri, View view) {  spinner.setVisibility(View.VISIBLE);  }  @Override  public void onLoadingFailed(String imageUri, View view, FailReason failReason) {  String message = null;  switch (failReason.getType()) {  case IO_ERROR:  message = "Input/Output error";  break;  case DECODING_ERROR:  message = "Image can't be decoded";  break;  case NETWORK_DENIED:  message = "Downloads are denied";  break;  case OUT_OF_MEMORY:  message = "Out Of Memory error";  break;  case UNKNOWN:  message = "Unknown error";  break;  }
//                    Toast.makeText(view.getContext(), message, Toast.LENGTH_SHORT).show();  imageView.setImageResource(R.drawable.ic_picture_loadfailed);spinner.setVisibility(View.GONE);  }  @Override  public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {  spinner.setVisibility(View.GONE);  }  });  //view.addView(imageLayout, 0);  view.addView(imageLayout);  return imageLayout;  }  @Override  public boolean isViewFromObject(View view, Object object) {  return view.equals(object);  }  @Override  public void restoreState(Parcelable state, ClassLoader loader) {  }  @Override  public Parcelable saveState() {  return null;  }  }
}

在使用的地方只要

ImagePagerActivityFragment fragment=new ImagePagerActivityFragment();if(pturls!=null) {//<span style="font-family: Arial;">pturls是由图片的url用“ ,”拼接而成,其他变量也是,自己根据需求自己整</span>
pturls=pturls.replaceAll("_small","");String[] ptarrs=pturls.split(",");fragment.setPhotos(ptarrs);fragment.setPosition(pos); }if(ptime!=null){String[] ptimes=ptime.split(",");fragment.setPhotosTime(ptimes);}if(plocation!=null){String[] plocations=plocation.split(",");fragment.setPhotosLocation(plocations);}getSupportFragmentManager().beginTransaction().add(R.id.iContainer, fragment).commit();

使用universalimageloader实现viewpager加载网络图片轮显相关推荐

  1. Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...

    在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...

  2. Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较

    在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...

  3. Android slider加载网络图片的框架

    android中使用slider加载网络图片,众所周知,在开发App的时候,差不多每个app的主页面的搭建都少不了广告轮播,广告轮播,我们可以手动轮播,也可以让其自动轮播,这都是可以的,当我们使用Vi ...

  4. Android Volley完全解析2:使用Volley加载网络图片

    原文链接:http://blog.csdn.net/guolin_blog/article/details/17482165,CSDN 郭霖 在上一篇文章中,我们了解了Volley到底是什么,以及它的 ...

  5. Android Volley完全解析(二),使用Volley加载网络图片 转载:http://blog.csdn.net/guolin_blog/article/details/174

    转载:http://blog.csdn.net/guolin_blog/article/details/17482165 在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法.本篇文章中 ...

  6. 安卓UIL框架加载网络图片

    1.添加依赖 compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' 2.添加权限 3.UIL 框架配置 pu ...

  7. iOS开发swift版异步加载网络图片(带缓存和缺省图片)

    iOS开发之swift版异步加载网络图片 与SDWebImage异步加载网络图片的功能相似,只是代码比较简单,功能没有SD的完善与强大,支持缺省添加图片,支持本地缓存. 异步加载图片的核心代码如下: ...

  8. 【转载】一行代码加载网络图片到ImageView——Android Picasso

    原文链接:一句代码加载网络图片到ImageView--Android Picasso  注意:此处使用下面代码需要先配置一下gradle,下载所需包. 具体操作如下图: compile 'com.sq ...

  9. ios开发多线程篇--异步加载网络图片GCD

    一.异步加载网络图片 1.ATS (1)简介 从iOS9.0开始,如果按照以前的方式写代码,在访问网络的时候 ,会报以下警告信息: App Transport Security has blocked ...

最新文章

  1. 和12岁小同志搞创客开发:如何选择合适的控制器?
  2. 力拎30磅!波士顿动力物流机器人Handle亮相,还会摆货架
  3. elasticsearch 嵌入式_Elasticsearch 开箱指南
  4. java 递归_Java的递归、如何与流相结合
  5. 【NLP】简单学习一下NLP中的transformer的pytorch代码
  6. Web前端工程师求职的失败——评《非你莫属》20120909期宋龙龙片段
  7. 机器学习中为什么需要梯度下降_梯度下降直觉 - 机器是如何学习的
  8. ORCAD CAPTURE 元件库详解
  9. 怎样为wordpress主题的文章列表添加无插件分页?
  10. C语言,两个超大整型数乘法
  11. What’s New in Virtio 1.1
  12. c语言怎么定义一个条件变量,C++ 条件变量(condition_variable)
  13. Firefly是什么?有什么特点?
  14. SaltStact自动化运维工具03
  15. mysql order优化2019_mysql 增加排序 性能差很多 怎么优化
  16. MTK modemlog分析
  17. 计算机电子线路制图是学啥的,电气制图与电子线路CAD课程教学大纲.doc
  18. 计算机cs怎么使用技巧,cs1.6如何添加电脑人【附快捷键命令】
  19. X86服务器及“机架、塔式、刀片”三类服务器分类
  20. Reverse complement DNA

热门文章

  1. 【Appium踩坑】Encountered internal error running command: Error executing adbExec.
  2. worthington丨worthington 胶原酶取样程序
  3. 我的Linux学习之路(纯小白)
  4. 食物链(Food Chain POJ 1182)
  5. 采用路缘石成型机在公路建设中与人工调整两相配合
  6. 山东教师教育网研修平台-首页
  7. 【STM32Cube_23】使用USART接收GPS数据并解析(L80-R)
  8. NSSCTF刷题wp——常用编码
  9. 注册码 文件内容 CS1.6 中英文 CD KEY注册文件内容
  10. 简单NLP分析套路(1)----语料库积累之3种简单爬虫方式应对大部分网站