使用universalimageloader实现viewpager加载网络图片轮显
来源:互联网 发布:网络违法犯罪举报 编辑:程序博客网 时间:2024/05/16 12:25
本文根据该博主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.ViewPager android:id="@+id/imagePager" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 下面显示的圆点 --> <LinearLayout android: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" > <ImageView android: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" /> <ProgressBar android:id="@+id/loading" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:visibility="gone" /> <TextView android: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"/> <TextView android: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();
0 0
- 使用universalimageloader实现viewpager加载网络图片轮显
- universalimageloader+viewpager+fragment加载网络图片轮显
- 使用UniversalImageLoader 加载网络图片并附带缓存效果
- UniversaLimageloader加RollPagerView实现网络加载圆角图片轮播
- 图片加载框架---UniversalImageLoader使用(一)
- 图片加载框架---UniversalImageLoader使用(一)
- 图片加载框架---UniversalImageLoader使用(一)
- 图片加载框架---UniversalImageLoader使用(一)
- ViewPager+RadioGroup 实现网络加载图片的轮播
- ViewPager网络加载图片并无限轮播实现
- 简单实现自己的类似UniversalImageLoader网络图片加载缓存框架
- UniversalImageLoader图片加载
- ViewPager加载网络图片
- ViewPager网络加载图片
- HttpURLConnection网络解析+universalimageloader解析图片+XListView刷新、加载+无限轮播
- Universalimageloader图片加载框架缓存本地图片的使用
- ViewPager网络加载图片+无限轮播
- 基于universalimageloader实现的图片加载控件BlurImageView
- jvm(2)-OutOfMemoryError 异常(内存溢出异常)
- svn版本管理系统的安装 centos+subversion+apache+jsvnadmin
- bzoj1180
- android ImageSwitcher
- 虚拟主机 部署mvc + silverlight流程与要点 (下)
- 使用universalimageloader实现viewpager加载网络图片轮显
- data-options的移除验证(easyui validatebox中移除验证)
- Hadoop安装
- Watchmen (Codeforces Round #345 (Div. 2) C)
- ORACLE管理-实用sql
- caffe 的layer的参数说明
- 快速排序、基准元的选取及其优化
- Java中整型的缓存机制
- hdu1003 Max Sum