一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Android开发实现广告无限循环功能示例

时间:2022-06-25 23:12:52 编辑:袖梨 来源:一聚教程网

本文实例讲述了Android开发实现广告无限循环功能。分享给大家供大家参考,具体如下:

一、效果图:

二、代码实现:

/**
 * 新闻首页
 *
 * @Project App_Card
 * @Package com.android.koomama.fragment.home
 * @author chenlin
 * @version 1.0
 * @Date 2014年6月22日
 * @Note TODO
 */
public class NewsHomeFragment extends BaseFragment implements OnTouchListener {
  private ImageHandler mHandler = new ImageHandler(new WeakReference(this));
  private ViewPager mViewPager;
  // 自定义轮播图的资源
  private int[] mImageResIds = { R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4, R.drawable.img5 };
  // 放轮播图片的ImageView 的list
  private List mImageList = new ArrayList();
  // 放圆点的View的list
  private List mDotList = new ArrayList();
  @Override
  public View initConvertView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_news_main, container, false);
  }
  @Override
  protected void onVisible(boolean isInit) {
    if (isInit) {
      initViews();
    }
  }
  private void initViews() {
    // 初始化iewPager的内容
    mViewPager = (ViewPager) mConvertView.findViewById(R.id.view_pager);
    LinearLayout dotLayout = (LinearLayout) mConvertView.findViewById(R.id.dotLayout);
    dotLayout.removeAllViews();
    for (int i = 0; i  viewlist;
    public ImageAdapter(List viewlist) {
      this.viewlist = viewlist;
    }
    @Override
    public int getCount() {
      // 设置成最大,使用户看不到边界
      return Integer.MAX_VALUE;
    }
    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
      return arg0 == arg1;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      // Warning:不要在这里调用removeView
    }
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
      // 对ViewPager页号求模取出View列表中要显示的项
      position %= viewlist.size();
      if (position  weakReference;
    private int currentItem = 0;
    // private boolean isOnce = true;
    protected ImageHandler(WeakReference wk) {
      weakReference = wk;
    }
    @Override
    public void handleMessage(Message msg) {
      super.handleMessage(msg);
      final NewsHomeFragment fragment = weakReference.get();
      if (fragment == null) {
        // Activity已经回收,无需再处理UI了
        return;
      }
      // 第一次不删重复的消息
      if (currentItem != 0) {
        // 检查消息队列并移除未发送的消息,这主要是避免在复杂环境下消息出现重复等问题。
        if (fragment.mHandler.hasMessages(MSG_UPDATE_IMAGE)) {
          fragment.mHandler.removeMessages(MSG_UPDATE_IMAGE);
        }
      }
      switch (msg.what) {
      case MSG_UPDATE_IMAGE:
        currentItem++;
        fragment.mViewPager.setCurrentItem(currentItem);
        // 准备下次播放
        fragment.mHandler.sendEmptyMessageDelayed(MSG_UPDATE_IMAGE, MSG_DELAY);
        break;
      case MSG_KEEP_SILENT:
        // 只要不发送消息就暂停了
        break;
      case MSG_BREAK_SILENT:
        fragment.mHandler.sendEmptyMessageDelayed(MSG_UPDATE_IMAGE, MSG_DELAY);
        break;
      case MSG_PAGE_CHANGED:
        // 记录当前的页号,避免播放的时候页面显示不正确。
        int position = msg.arg1;
        int lastIndex = 0;
        int index = position % fragment.mImageList.size();
        for (int i = 0; i 

三、布局


  
    
    
      
      
    
  


热门栏目