最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
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
三、布局
相关文章
- 永恒之塔2魔道星技能如何 10-14
- 鸣潮维里奈回血机制是什么-鸣潮维里奈回血机制分享 10-14
- 原神胡桃突破素材在哪 升级素材获取位置一览 10-14
- 永远的蔚蓝星球草团仙人属性技能 10-14
- 龙魂旅人礼物获取方法途径分享 10-14
- 三角洲行动黄金鸟窝什么时候结束 黄金鸟窝活动结束时间一览 10-14