Android实现一款不错Banner界面广告图片循环轮播

Demo实现的效果图如下:
这里写图片描述
工程目录如下图:
这里写图片描述
一个Application,一个实体类,一个Activity,另一个是自定义的AutoPlayingViewPager继承FrameLayout。
首先看一下自定义的AutoPlayingViewPager,功能都在这里实现。采用了第三方图片加载框架:universal_image_loader;

package com.skycracks.autoplayingviewpager;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import com.nostra13.universalimageloader.core.ImageLoader;

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Interpolator;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Scroller;
import android.widget.TextView;



/**
 * 创建时间: 2016年1月10日 下午3:43:22<br>
 * 版本: [v1.0]<br>
 * 类描述: 实现ViewPager轮播图<br>
 * 使用了ImageLoader 对图片进行加载,所以使用前必须初始化ImageLoader<br>
 * stopPlaying() 当轮播所在页面不在顶栈时,有必要停止定时并且释放资源<br>
 * startPlaying() 当再次恢复时调用<br>
 *
 */
public class AutoPlayingViewPager extends FrameLayout {
   

    private final static String TAG = "AutoPlayingViewPager";
    /**
     * 轮播图图片数量
     */
    private int IMAGE_COUNT;
    /**
     * 自动轮播的时间间隔
     */
    private final static int TIME_INTERVAL = 5;
    /**
     * 切换图片过度时间
     */
    private int swapDuration = 1000;
    /**
     * 默认图片资源(本地图片资源Id)
     */
    private int [] defaultIds = new int[] {
            R.drawable.image01,R.drawable.image02,
            R.drawable.image03,R.drawable.image04,R.drawable.image05};
    /**
     * 默认图片资源(图片URL地址)
     */
    private String [] defaultUrl = new String[] {
            "http://g.hiphotos.baidu.com/imgad/pic/item/a8773912b31bb051be533b24317adab44aede043.jpg",
            "http://g.hiphotos.baidu.com/imgad/pic/item/c75c10385343fbf22c362d2fb77eca8065388fa0.jpg",
            "http://liaoning.sinaimg.cn/2014/1111/U10435P1195DT20141111220802.jpg",
            "http://photocdn.sohu.com/20151124/mp43786429_1448294862260_4.jpeg",
            "http://h.hiphotos.baidu.com/image/pic/item/faedab64034f78f0b00507c97e310a55b3191cf9.jpg" };

    private String [] defaultTitle = new String [] {
        "今晚打老虎","今晚打松鼠","今晚打LOL","今晚打DOTA1","今晚打DOTA2"};
    /**
     * 自定义轮播图资源
     */
    private List<AutoPlayInfo> mAutoPlayInfoList;
    /**
     * 放圆点的View的list
     */
    private List<View> dotViewsList;
    /**
     * 轮播容器
     */
    private ViewPager mViewPager;
    /**
     * 当前轮播页
     */
    private int currentItem = 0;
    /**
     * 定时器对象
     */
    private ScheduledExecutorService scheduledExecutorService;

    private Context mContext;

    private LayoutInflater mInflate;
    /**
     * ViewPageItem点击回调接口
     */
    private OnPageItemClickListener onPageItemClickListener;

    public void setOnPageItemClickListener(OnPageItemClickListener onPageItemClickListener){
        this.onPageItemClickListener = onPageItemClickListener;
    }

    public interface OnPageItemClickListener{
   
        /**
         * ViewPageItem点击事件回调
         */
        void onPageItemClick(int position, String adLink);
    }

    /**
     * 消息处理器、设置当前显示页
     */
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Messa
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值