Android实现Banner图片循环轮播

Android实现Banner图片循环轮播

功能:
    1.实现循环播放多张图片
    2.也可手动滑动循环

效果图:


模块使用方法:
    下载好附件中的demo,右键自己项目选择properties,在Java Build Path栏中projicets内点击add,添加引用项目



    在AndroidManifest文件中添加权限
1
2
<uses-permission android:name= "android.permission.INTERNET"  />
<uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE"  />
         
    主界面xml文件代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<? xml  version = "1.0"  encoding = "utf-8" ?>
< LinearLayout  xmlns:android = "http://schemas.android.com/apk/res/android"
     android:layout_width = "match_parent"
     android:layout_height = "match_parent"
     android:orientation = "vertical"  >
             
         
     < fragment
         android:id = "@+id/fragment_cycle_viewpager_content"
         android:name = "cn.androiddevelop.cycleviewpager.lib.CycleViewPager"
         android:layout_width = "match_parent"
         android:layout_height = "180dip"  />
              
              
     < RelativeLayout
         android:layout_width = "fill_parent"
         android:layout_height = "0dip"
         android:layout_weight = "1" >
                 
         < TextView
             android:layout_width = "wrap_content"
             android:layout_height = "wrap_content"
             android:layout_centerInParent = "true"
             android:text = "content" />
     </ RelativeLayout >
             
</ LinearLayout >

    MainActivity代码,注释讲的很清楚
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package  com.stevenhu.android.phone.ui;
         
import  java.util.ArrayList;
import  java.util.List;
         
import  com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import  com.nostra13.universalimageloader.core.DisplayImageOptions;
import  com.nostra13.universalimageloader.core.ImageLoader;
import  com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import  com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import  com.stevenhu.android.phone.bean.ADInfo;
import  com.stevenhu.android.phone.utils.ViewFactory;
         
import  android.annotation.SuppressLint;
import  android.app.Activity;
import  android.os.Bundle;
import  android.view.View;
import  android.widget.ImageView;
import  android.widget.Toast;
import  cn.androiddevelop.cycleviewpager.lib.CycleViewPager;
import  cn.androiddevelop.cycleviewpager.lib.CycleViewPager.ImageCycleViewListener;
/**
  * 描述:主页
  *
  * @author 胡笃勇
  * @version 2015年5月8日 上午10:47:37
  */
public  class  MainActivity  extends  Activity {
         
     private  List<ImageView> views =  new  ArrayList<ImageView>();
     private  List<ADInfo> infos =  new  ArrayList<ADInfo>();
     private  CycleViewPager cycleViewPager;
             
     private  String[] imageUrls = { "http://img0.imgtn.bdimg.com/it/u=2799491813,588820357&fm=21&gp=0.jpg" ,
             "http://img3.imgtn.bdimg.com/it/u=2414756802,531263205&fm=21&gp=0.jpg" ,
             "http://img2.imgtn.bdimg.com/it/u=2280771936,3888134874&fm=21&gp=0.jpg" ,
             "http://img3.imgtn.bdimg.com/it/u=2327585548,1525749689&fm=21&gp=0.jpg" ,
             
     @Override
     protected  void  onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.ui_main);
         configImageLoader();
         initialize();
     }
             
     @SuppressLint ( "NewApi" )
     private  void  initialize() {
                 
         cycleViewPager = (CycleViewPager) getFragmentManager()
                 .findFragmentById(R.id.fragment_cycle_viewpager_content);
                 
         for ( int  i =  0 ; i < imageUrls.length; i ++){
             ADInfo info =  new  ADInfo();
             info.setUrl(imageUrls<i>);
             info.setContent( "图片-->"  + i );
             infos.add(info);
         }
                 
         // 将最后一个ImageView添加进来
         views.add(ViewFactory.getImageView( this , infos.get(infos.size() -  1 ).getUrl()));
         for  ( int  i =  0 ; i < infos.size(); i++) {
             views.add(ViewFactory.getImageView( this , infos.get(i).getUrl()));
         }
         // 将第一个ImageView添加进来
         views.add(ViewFactory.getImageView( this , infos.get( 0 ).getUrl()));
                 
         // 设置循环,在调用setData方法前调用
         cycleViewPager.setCycle( true );
         
         // 在加载数据前设置是否循环
         cycleViewPager.setData(views, infos, mAdCycleViewListener);
         //设置轮播
         cycleViewPager.setWheel( true );
         
         // 设置轮播时间,默认5000ms
         cycleViewPager.setTime( 2000 );
         //设置圆点指示图标组居中显示,默认靠右
         cycleViewPager.setIndicatorCenter();
     }
             
     private  ImageCycleViewListener mAdCycleViewListener =  new  ImageCycleViewListener() {
         
         @Override
         public  void  onImageClick(ADInfo info,  int  position, View imageView) {
             if  (cycleViewPager.isCycle()) {
                 position = position -  1 ;
                 Toast.makeText(MainActivity. this ,
                         "position-->"  + info.getContent(), Toast.LENGTH_SHORT)
                         .show();
             }
                     
         }
         
     };
             
     /**
      * 配置ImageLoder
      */
     private  void  configImageLoader() {
         // 初始化ImageLoader
         @SuppressWarnings ( "deprecation" )
         DisplayImageOptions options =  new  DisplayImageOptions.Builder().showStubImage(R.drawable.icon_stub)  // 设置图片下载期间显示的图片
                 .showImageForEmptyUri(R.drawable.icon_empty)  // 设置图片Uri为空或是错误的时候显示的图片
                 .showImageOnFail(R.drawable.icon_error)  // 设置图片加载或解码过程中发生错误显示的图片
                 .cacheInMemory( true // 设置下载的图片是否缓存在内存中
                 .cacheOnDisc( true // 设置下载的图片是否缓存在SD卡中
                 // .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
                 .build();  // 创建配置过得DisplayImageOption对象
         
         ImageLoaderConfiguration config =  new  ImageLoaderConfiguration.Builder(getApplicationContext()).defaultDisplayImageOptions(options)
                 .threadPriority(Thread.NORM_PRIORITY -  2 ).denyCacheImageMultipleSizesInMemory()
                 .discCacheFileNameGenerator( new  Md5FileNameGenerator()).tasksProcessingOrder(QueueProcessingType.LIFO).build();
         ImageLoader.getInstance().init(config);    
     }
}</i>

注意事项:
     文章只介绍了这个模块中的外部设置方法,如果有想深入研究的可以学习一下demo中的源代码
    上面讲在自己项目中添加对这个demo项目的依赖关系,因为demo项目中有的基类已经定义好,无需我们再去重新写一遍,而且复制粘贴到自己项目中会使项目很冗余,所以添加一个依赖关系调用相关的外部方法即可。    

Note:本源代码由“极分享”社区创建,添加或者修改,我们会持续优化源代码以提供更好的解决方案,更多详情和支持请前往 finalshares.com


本文参考: http://blog.csdn.net/stevenhu_223/article/details/45577781
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值