设为首页 加入收藏

TOP

自定义View(二)ViewPage广告轮播(三)
2017-10-13 10:47:29 】 浏览:11046
Tags:定义 View ViewPage 广告
iption); images
= new ArrayList<ImageView>(); for (int i = 0; i < imgesId.length; i++) { ImageView image = new ImageView(this); image.setBackgroundResource(imgesId[i]); images.add(image); ImageView point = new ImageView(this); point.setBackgroundResource(R.drawable.point_selecte); //为Point设置布局参数 应为point的父节点是LinerLayout,所以需要使用LinearLayout.LayoutParams LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20); params.bottomMargin = 20; if (i == 0) point.setEnabled(false); else { point.setEnabled(true); params.leftMargin = 20; } point.setLayoutParams(params); ll_point_group.addView(point); } viewPage.setAdapter(new MyViewPageAdapter()); //初始化显示imgDescription imgDescription.setText(imgDescriptions[presentPostion]); //设置初始启动imageView的位置为1000的中间,避免初始为0时不能向左滑动 viewPage.setCurrentItem(1000 / 2 - 1000 / 2 % images.size(), true); //设置ViewPage页面切换的监听事件 viewPage.addOnPageChangeListener(new MyPageChangeListener()); //延迟发送handler消息 用于启动ViewPage自动轮播 handler.sendEmptyMessageDelayed(OPTION_TYPE_AUTO, 2000); for (int i = 0; i < ll_point_group.getChildCount(); i++) { final View point = ll_point_group.getChildAt(i); final int finalI = i; point.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { pointClickPosition = finalI; handler.removeCallbacksAndMessages(null); handler.sendEmptyMessageDelayed(OPTION_TYPE_POINT, 50); for (int j = 0; j < ll_point_group.getChildCount(); j++) { ll_point_group.getChildAt(j).setEnabled(true); } point.setEnabled(false); } }); } } /** * viewPage切换监听 */ class MyPageChangeListener implements ViewPager.OnPageChangeListener { /** * 当页滑动的时候 回调该方法 * * @param position 当前滑动页面的位置 * @param positionOffset 当前页面滑动的百分比 * @param positionOffsetPixels 当前页面滑动的像素 */ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } /** * 页面被选中后已完全显示时调用改方法 * * @param position 被选中的页面的位置 */ @Override public void onPageSelected(int position) { imgDescription.setText(imgDescriptions[position % imgDescriptions.length]); ll_point_group.getChildAt(presentPostion % images.size()).setEnabled(true); ll_point_group.getChildAt(position % imgDescriptions.length).setEnabled(false); presentPostion = position; } /** * 页面滑动的状态 * 静止-滑动 * 滑动-静止 * 静止-拖拽 * * @param state */ @Override public void onPageScrollStateChanged(int state) { if (state == viewPage.SCROLL_STATE_DRAGGING) { //拖拽状态 isDraging = true; //如果处于拖拽状态 就移除handler 避免拖拽过程中自动轮播、 handler.removeCallbacksAndMessages(null); } else if (state == viewPage.SCROLL_STATE_SETTLING) {//滑动状态 } else if (state == viewPage.SCROLL_STATE_IDLE) {//休闲状态 isDraging = false; //拖拽结束后调用改方法 先移除handler 然后重新发送handler 启动自动 轮播 handler.removeCallbacksAndMessages(null); handler.sendEmptyMessageDelayed(OPTION_TYPE_AUTO, 3000); } } } /** * pageAdaapter适配器 */ class MyViewPageAdapter extends PagerAdapter { /** * 返回ViewPage总数 * * @return */ @Override public int getCount() { return 1000; } /** * 返回ViewPage中的position位置处的ImageView * * @param container 代表ViewPage * @param position 位置 * @retu
首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇微信支付仅能成功调用一次的问题 下一篇Android Button的基本使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目