ViewPager加载页面,底部圆点指示器,圆点拖动效果,支持手势拖动

效果概述:

  • 随着viewpager中页面的滑动,底部的圆点也有拖动效果,支持手势拖动

效果图如下:

这里写图片描述

实现原理:

  • ViewPager 无限轮播,设置了Integer.MAX_VALUE ; 其实也可以设置为前一张后一张,不过麻烦点儿
  • 根据ViewPager中图片个数不同,底部显示不同个数的圆点
  • 动态加载圆点的同时,记录下圆点的位置,放于集合中
  • ViewPager 的setOnPageChangeListener监听,用于设置ViewPager的页面切换时,圆点的动画效果
  • 支持手势拖动

遇到的问题

  1. 装载圆点的layout在onCreate()中未立即装载,需要动态获取圆点位置的方法失败

    解决办法: 网上有说其他的方法;我是直接开了子线程,睡了500ms

  2. 手势拖动,使用handler,但会触发setOnPageChangeListener监听,导致立即切换到下一个图片,特别不友好

    解决办法:onPageScrollStateChanged方法中判断,状态为1(开始滑动)的时候,hanlder移除掉所有的消息,然后5s后重发消息

    3 . 手势拖动,右滑的时候,圆点的移动效果和左滑不同

    解决办法:根据当前position判断左滑/右滑(我使用的是Integer.MAX_VALUE),设置不同的动画

核心代码

/*
暴漏出去的item点击事件接口:OnPagerItemClickListnener
需要传递的参数:
item 个数
List
Circle 形状,颜色【包括normal和select】
轮播时间间隔

    viewpager加载前图片,加载失败图片

*/

public class MainActivity extends AppCompatActivity {

private ViewPager pager;
private LinearLayout layout;

private List<String> urlList=new ArrayList<>();
private List<Integer> posList=ne
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值