caikaidev / autoscrollviewpager Goto Github PK
View Code? Open in Web Editor NEWandroid atuo scroll viewpager
Home Page: http://www.jianshu.com/p/5c47cb6afe0f
android atuo scroll viewpager
Home Page: http://www.jianshu.com/p/5c47cb6afe0f
Fatal Exception: java.lang.ArithmeticException
divide by zero
com.kcode.autoscrollviewpager.view.BaseViewPagerAdapter.onPageSelected (BaseViewPagerAdapter.java:174)
androidx.viewpager.widget.ViewPager.dispatchOnPageSelected (ViewPager.java:1947)
androidx.viewpager.widget.ViewPager.scrollToItem (ViewPager.java:686)
androidx.viewpager.widget.ViewPager.setCurrentItemInternal (ViewPager.java:670)
androidx.viewpager.widget.ViewPager.setCurrentItemInternal (ViewPager.java:631)
androidx.viewpager.widget.ViewPager.setCurrentItem (ViewPager.java:612)
com.kcode.autoscrollviewpager.view.AutoViewPager$1.run (AutoViewPager.java:69)
android.os.Handler.handleCallback (Handler.java:789)
android.os.Handler.dispatchMessage (Handler.java:98)
android.os.Looper.loop (Looper.java:164)
android.app.ActivityThread.main (ActivityThread.java:6938)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)
Android ViewPager 有一个 bug,导致在做自动轮播图的时候如果选用了将 Adapter 设置为无限大的方案,向前滑动页面到一半时松手,页面不会回到滑动之前的页面,反倒会滑动到反方向,也就是滑动之前页面的前一页。
这个问题的原因是 ViewPager 在监听 Touch 的 UP 事件的时候,通过对当前页数 + 滑动完成度(已经滑动的距离与当前页面宽度的比)+ 一个补偿值实现的,如果设置了无限大的 Adapter,当前页数势必很大(如:1 073 741 823),而此时如果滑动系数的值小数位比较多(如:0.37542315),而这个滑动系数是 float 型的,两数相加会变为科学计数法计数,已经超过的了 float 的精度范围,无法保证计算出的页数是正确的。而 ViewPager 限定每次最多只能滑动一屏,因此如果这个错误的结果比当前页前一页还小,就会选用当前页前一页了。
建议把起始页码和 Adapter 大小缩小 1000 倍。
compile 'com.kcode.github:autoScrollViewPager:1.0.1' 这个路径是错的,
compile 'com.github.fccaikai:autoScrollViewPager:1.0.1' 这个是正确的。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.