public class MainActivity extends Activity { private int[] p_w_picpathResIds = { R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e, }; private String[] descs = { "巩俐不低俗,我就不能低俗", "扑树又回来啦!再唱经典老歌引万人大合唱", "揭秘北京电影如何升级", "乐视网TV版大派送", "热血屌丝的反杀", }; private View[] dots = new View[p_w_picpathResIds.length]; private ImageView[] p_w_picpaths = new ImageView[p_w_picpathResIds.length]; /** 当前选中的点 */ private View currentDot; /** ViewPager的页数 */ private int pageSize = p_w_picpathResIds.length * 10000 * 100; private int halfPageSize = pageSize / 2; /** 自动切换图片 */ private static final int AUTO_SWITCH_IMAGE = 0; private Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case AUTO_SWITCH_IMAGE: swithImage(); break; default: break; } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); view_pager = (ViewPager) findViewById(R.id.view_pager); tv_desc = (TextView) findViewById(R.id.tv_desc); ll_dots = (LinearLayout) findViewById(R.id.ll_dots); for (int i = 0; i < p_w_picpathResIds.length; i++) { initImages(i); initDots(i); } view_pager.setOnPageChangeListener(mOnPageChangeListener); changeDescAndDot(0); view_pager.setAdapter(adapter); view_pager.setCurrentItem(halfPageSize); } @Override protected void onStart() { super.onStart(); sendSwitchImageMessage(); } @Override protected void onStop() { super.onStop(); removeSiwtchImageMessage(); } /** 移除切换图片的消息 */ private void removeSiwtchImageMessage() { handler.removeMessages(AUTO_SWITCH_IMAGE); } /** 切换图片 */ protected void swithImage() { int currentItem = view_pager.getCurrentItem(); if (currentItem == view_pager.getAdapter().getCount() - 1) { currentItem = 0; } else { currentItem++; } view_pager.setCurrentItem(currentItem); sendSwitchImageMessage(); } /** * 发送切换图片的消息 */ private void sendSwitchImageMessage() { handler.sendEmptyMessageDelayed(AUTO_SWITCH_IMAGE, 3000); } OnPageChangeListener mOnPageChangeListener = new OnPageChangeListener() { // 当某一页被选择的时候 @Override public void onPageSelected(int position) { changeDescAndDot(position); } // 当页面滑动的时候 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } // 当页面滑动状态发生改变的时候 @Override public void onPageScrollStateChanged(int state) { if (state == ViewPager.SCROLL_STATE_IDLE) { sendSwitchImageMessage(); } else { // 当前不是空闲状态 removeSiwtchImageMessage(); } } }; /** * 改变图片描述和点 * @param position */ private void changeDescAndDot(int position) { position = position % p_w_picpaths.length; // 让position在 0 ~ p_w_picpaths.length - 1之间 tv_desc.setText(descs[position]); // 如果原来有选中的点,把原来的变成未选择状态 if (currentDot != null) { currentDot.setSelected(false); } // 把当前位置的点变成选择状态 dots[position].setSelected(true); currentDot = dots[position]; } /** 初始化ViewPager里面的点 */ private void initDots(int i) { dots[i] = new View(this); LinearLayout.LayoutParams params = new LayoutParams(5, 5); if (i != 0) { // 如果不是第一个点要设置marginLeft属性 params.leftMargin = 5; } dots[i].setLayoutParams(params); dots[i].setBackgroundResource(R.drawable.selector_dot); ll_dots.addView(dots[i]); } /** 初始化图片 */ private void initImages(int i) { p_w_picpaths[i] = new ImageView(this); p_w_picpaths[i].setBackgroundResource(p_w_picpathResIds[i]); } PagerAdapter adapter = new PagerAdapter() { @Override public int getCount() { return pageSize; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } /** * 生成要显示的界面 * 相当于BaseAdapter中的getView * @param container ViewPager对象 * @param position 要生成界面的位置 * */ @Override public Object instantiateItem(ViewGroup container, int position) { position = position % p_w_picpaths.length; // 让position在 0 ~ p_w_picpaths.length - 1之间 ImageView p_w_picpathView = p_w_picpaths[position]; container.addView(p_w_picpathView); return p_w_picpathView; }; /** * 销毁一个界面 * @param container ViewPager对象 * @param position 要销毁界面的位置 * @param object instantiateItem方法的返回值 */ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); }; }; private TextView tv_desc; private ViewPager view_pager; private LinearLayout ll_dots; }
广告条
原创
©著作权归作者所有:来自51CTO博客作者chs403的原创作品,谢绝转载,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
华为云GeminiDB,广告RTA的“登云梯”
详细介绍GeminiDB在广告RTA中的优势特性。
数据 数据库 数据导入 GeminiDB 广告RTA -
facebook广告文案怎么写吸引人
facebook广告文案这样写
Test 差异化 解决方案 -
快速部署内网的DNS(AdGuard),实现广告过滤!
快速部署内网DNS(AdGuard Home),实现广告过滤!
DNS AdGuard 内网DNS AdGuard Home 自己DNS -
Android 使用ViewPager实现广告条滚动
1.首先是效果图ViewPager切换的同时改变下面的文字和点的状态。下面是布局
ViewPager android xml Code -
利用RecyclerView实现无限轮播广告条
话,图片只能简单的设计到文字上方,所以布局方面仍是很受限制,为了...
RecyclerView 无限轮播广告条 ide 控件 项目结构 -
Cocos2d-X 添加广告条Cocos2d-X 添加广告条 android xml html
-
Android 原生控件ViewFlipper实现仿淘宝滚动广告条
首先说一下:这个控件是Android原生自带,不需要依赖和导包有了这个控件,直接A...
Android ViewFlipper 跑马灯 垂直滚动 轮播广告 -
广告条效果实现----ViewPager加载大图片(LruCache)以及定时刷新
先来看看效果: 1、广告条效果应该是使用的比较广泛的一个效果了,使用的基本构架就是一个ViewPager组件,在低版本的Android中,我
移动开发 java runtime android ide -
一条视频广告 75w
聊聊内容领域。
商业 自媒体 公众号 移动开发 盈利模式