ViewPager无限轮播+自定义圆点
来源:互联网 发布:adblock mac chrome 编辑:程序博客网 时间:2024/04/29 16:43
在drawable创建两个shape标签的xml布局,暗色个红色
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="5dp"/> <solid android:color="#88000000"/></shape>
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <corners android:radius="8dp" /> <solid android:color="#f00" /></shape>
在代码中实现,把创建的圆点添加到新建的 ArrayList中
//根据lunboPager的个数绘制圆点 dotList = new ArrayList<ImageView>(); for (int i = 0; i < lunboPager.length; i++) { ImageView image = new ImageView(MainActivity.this); if(i==0){ image.setImageResource(R.drawable.dot_red); }else{ image.setImageResource(R.drawable.dot_hui); } //把创建的圆点图片添加到布局中 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20); params.setMargins(5,0,5,0); linear.addView(image, params); dotList.add(image); }
以上代码是绘制原点的,下面实现图片的无限轮播
//轮波图需要的图片 private void initDataPager() { lunboPager = new int[] {R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a4}; }
viewpager适配器
//viewpager适配器 private void setPagerAdapter() { vp.setCurrentItem(lunboPager.length*5000); vp.setAdapter(new PagerAdapter() { @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public Object instantiateItem(ViewGroup container, int position) { //设置轮播图片 ImageView image = new ImageView(MainActivity.this); image.setImageResource(lunboPager[position%lunboPager.length]); container.addView(image); //为图片添加点击监听 image.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN://down 手指按下的时候,图片停止滑动 // 手指按下的时候,停止自动轮播的任务 // 移除所有的消息及回调 null 移除所有 handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_UP://up 手指抬起的时候 handler.sendEmptyMessageDelayed(0, 2000); break; case MotionEvent.ACTION_CANCEL: handler.sendEmptyMessageDelayed(0, 2000); break; } return true; } }); return image; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } });
viewpager的滑动监听
private void setPagerLiseter() { vp.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { //界面切换的时候,下面的圆点跟着滑动 for (int i = 0; i < lunboPager.length; i++) { if(i==arg0%lunboPager.length){ dotList.get(i).setImageResource(R.drawable.dot_red); }else{ dotList.get(i).setImageResource(R.drawable.dot_hui); } } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); handler.sendEmptyMessageDelayed(0, 2000); }
Handler 处理消息,实现轮播
Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { if(msg.what==0){ //获取当前vp的下标 int currentItem = vp.getCurrentItem(); currentItem++; vp.setCurrentItem(currentItem); handler.sendEmptyMessageDelayed(0, 2000); } }; };
0 0
- ViewPager无限轮播+自定义圆点
- ViewPager无限轮播+自定义小圆点+ListView展示
- ViewPager无限轮播+圆点+GridView数据展示
- ViewPager+小圆点进行无限轮播
- Viewpager自动无限轮播+小圆点
- ViewPager小圆点无限轮播
- ViewPager加小圆点无限轮播
- ViewPager无限轮播与小点点
- viewpager无限轮播、加小圆点
- ViewPager小圆点无限轮播
- ViewPager+小圆点的无限轮播
- Viewpager实现小圆点无限轮播
- ViewPager实现无限轮播+小圆点
- ViewPager实现无限轮播+小点点
- ViewPager实现无限轮播+小点点
- 自定义无限轮播ViewPager的实现
- viewpager无限轮播
- Viewpager无限轮播
- 枚举类(三):枚举类中几个常用的方法
- js 两个圆括号 自调用 闭包
- Windows Dev Intro - Subclassing Controls
- windows下PHP环境的搭建
- Spark中文手册8:spark GraphX编程指南(1)
- ViewPager无限轮播+自定义圆点
- 【HUSTOJ】1093: 1992^1992的末两位数是多少
- 面试之路(28)-反转链表(reverse ListNode)
- 初识Servlet
- cPanel网络磁盘的设置与管理
- Spark中文手册9:spark GraphX编程指南(2)
- html5使用图像-图像裁剪
- UNIX环境高级编程学习笔记之文件I/O(一)
- 手机安全卫士05