使用HorizontalScrollView实现广告栏Banner及相关原理分析.doc

使用HorizontalScrollView实现广告栏Banner及相关原理分析.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用HorizontalScrollView实现广告栏Banner及相关原理分析

使用HorizontalScrollView实现广告栏Banner及相关原理分析 现在的App中,广告栏Banner的使用还是挺广泛的,用于展示各种广告、活动推荐等。使用HorizontalScrollView可以很简单的实现一个可自动播放、可滑动、可点击的广告栏Banner,这个也可以做为一个例子,来学习自定义控件的制作。相关原理主要包括两个方面: onMeasure、onLayout、onDraw等View、ViewGroup相关布局函数; dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent等触摸事件处理函数(包括Click等事件触发); 这两部分搞懂后,制作自定义控件就得心应手了。 一、需求 控件每次展示一张图片,隔一段时间换播下一张,如果当前是最后一张则展示第一张; 用户手指触摸控件,停止轮播,用户滑动手指,则根据方向展示相应下一张或前一张图片; 如果是第一张图片继续往前滑动,需要展示最后一张图片,如果最后一张图片往后滑动,展示第一张图片; 最下方需要有小白点来指示当前是第几张图片; 最终效果如图: 这里写图片描述 二、初设计 HorizontalScrollView本来就是一个横向滑动组件,使用它可以很方便的实现滑动及相应的动画效果,所以选择用它来写这个控件,我看网上也有使用ViewPager实现,原理都是大同小异;下面是按上面的需求做的初始设计,在实现的过程中还会碰到其他问题,需要按情况解决。 布局 HorizontalScrollView——LinearLayout——ImageView List 同时需要在HorizontalScrollView上画小白点指示当前页 定时滚动 添加一个定时器,每隔一段时间滑动到下一页,注意最后一页的循环处理。 用户事件 添加事件监控,触摸停止定时器及滑动事件处理 三、具体实现 1. 设计布局 xml中的布局只有最外层控件,其他的LinearLayout和ImageView都是动态添加进去的,实现如下: public class ADPager extends HorizontalScrollView{ private LinearLayout container = null; private LinearLayout.LayoutParams imgLayoutParams = null; public ADPager(Context context) { super(context); init(); } private void init(){ Context ctx = getContext(); container = new LinearLayout(ctx); ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); container.setLayoutParams(layoutParams); //横向布局 container.setOrientation(LinearLayout.HORIZONTAL); imgLayoutParams = new LinearLayout.LayoutParams(getWidth(),getHeight()); this.addView(container); this.setSmoothScrollingEnabled(true); //不显示滑动条 this.setHorizontalScrollBarEnabled(false); } public void setImageList(int imgArray[]){ int size = imgArray.length; if(size 1){ //如果大于一张图片,第一张前放最后一张图片 this.container.addView(makeImageView(imgArray[size - 1]));

您可能关注的文档

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档