使用universalimageloader实现viewpager加载网络图片轮显
本文根据该博主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加载网络图片轮显相关推荐
- Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...
在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...
- Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较
在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...
- Android slider加载网络图片的框架
android中使用slider加载网络图片,众所周知,在开发App的时候,差不多每个app的主页面的搭建都少不了广告轮播,广告轮播,我们可以手动轮播,也可以让其自动轮播,这都是可以的,当我们使用Vi ...
- Android Volley完全解析2:使用Volley加载网络图片
原文链接:http://blog.csdn.net/guolin_blog/article/details/17482165,CSDN 郭霖 在上一篇文章中,我们了解了Volley到底是什么,以及它的 ...
- Android Volley完全解析(二),使用Volley加载网络图片 转载:http://blog.csdn.net/guolin_blog/article/details/174
转载:http://blog.csdn.net/guolin_blog/article/details/17482165 在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法.本篇文章中 ...
- 安卓UIL框架加载网络图片
1.添加依赖 compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' 2.添加权限 3.UIL 框架配置 pu ...
- iOS开发swift版异步加载网络图片(带缓存和缺省图片)
iOS开发之swift版异步加载网络图片 与SDWebImage异步加载网络图片的功能相似,只是代码比较简单,功能没有SD的完善与强大,支持缺省添加图片,支持本地缓存. 异步加载图片的核心代码如下: ...
- 【转载】一行代码加载网络图片到ImageView——Android Picasso
原文链接:一句代码加载网络图片到ImageView--Android Picasso 注意:此处使用下面代码需要先配置一下gradle,下载所需包. 具体操作如下图: compile 'com.sq ...
- ios开发多线程篇--异步加载网络图片GCD
一.异步加载网络图片 1.ATS (1)简介 从iOS9.0开始,如果按照以前的方式写代码,在访问网络的时候 ,会报以下警告信息: App Transport Security has blocked ...
最新文章
- 和12岁小同志搞创客开发:如何选择合适的控制器?
- 力拎30磅!波士顿动力物流机器人Handle亮相,还会摆货架
- elasticsearch 嵌入式_Elasticsearch 开箱指南
- java 递归_Java的递归、如何与流相结合
- 【NLP】简单学习一下NLP中的transformer的pytorch代码
- Web前端工程师求职的失败——评《非你莫属》20120909期宋龙龙片段
- 机器学习中为什么需要梯度下降_梯度下降直觉 - 机器是如何学习的
- ORCAD CAPTURE 元件库详解
- 怎样为wordpress主题的文章列表添加无插件分页?
- C语言,两个超大整型数乘法
- What’s New in Virtio 1.1
- c语言怎么定义一个条件变量,C++ 条件变量(condition_variable)
- Firefly是什么?有什么特点?
- SaltStact自动化运维工具03
- mysql order优化2019_mysql 增加排序 性能差很多 怎么优化
- MTK modemlog分析
- 计算机电子线路制图是学啥的,电气制图与电子线路CAD课程教学大纲.doc
- 计算机cs怎么使用技巧,cs1.6如何添加电脑人【附快捷键命令】
- X86服务器及“机架、塔式、刀片”三类服务器分类
- Reverse complement DNA
热门文章
- 【Appium踩坑】Encountered internal error running command: Error executing adbExec.
- worthington丨worthington 胶原酶取样程序
- 我的Linux学习之路(纯小白)
- 食物链(Food Chain POJ 1182)
- 采用路缘石成型机在公路建设中与人工调整两相配合
- 山东教师教育网研修平台-首页
- 【STM32Cube_23】使用USART接收GPS数据并解析(L80-R)
- NSSCTF刷题wp——常用编码
- 注册码 文件内容 CS1.6 中英文 CD KEY注册文件内容
- 简单NLP分析套路(1)----语料库积累之3种简单爬虫方式应对大部分网站