android 广告文字轮播代码,Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)...

易采站长站为您分析Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)的相关资料,需要的朋友可以参考下

前言:经常会看到有一些app的banner界面可以实现循环播放多个广告图片和手动滑动循环。本以为单纯的ViewPager就可以实现这些功能。但是蛋疼的事情来了,ViewPager并不支持循环翻页。所以要实现循环还得需要自己去动手。自己在网上也找了些例子,本博文的Demo是结合自己找到的一些相关例子的基础上去改造,也希望对读者有用。

Demo实现的效果图如下:

2016022213515140.gif

Demo代码:

工程目录如下图:

2016022213515141.jpg

废话不多说,上代码。

1.主Activity代码如下:

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 stevenhu

* @version 2015年5月8日 上午10:47:37

*/

public class MainActivity extends Activity {

private List views = new ArrayList();

private List infos = new ArrayList();

private CycleViewPager cycleViewPager;

private String[] imageUrls = {"http://www.easck.com/v55183/infoimg/2013-07/130720115322ky.jpg",

"http://www.easck.com/20130626/8174275_085522448172_2.jpg",

"http://www.easck.com/20111215/577405_080531548148_2.jpg",

"http://www.easck.com/20110722/2912365_092519919000_2.jpg",

"http://www.easck.com/58pic/12/64/27/55U58PICrdX.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);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值