因为需求是需要做一个类似抖音的上下滑动的播放视频的功能,功能很好实现。但是主要问题是在与Android9.0的手机上,ViewPager上下滑动很卡顿,需要拉伸到很长才会加载下一页。
网上目前也有很多类似调整灵敏度的博客,但是都其实不好用,或者说都不符合我的需求。但是其实大体意思都相同的。有一些是通过反射修改viewpager的私有属性mMinimumVelocity
和mFlingDistance
,改变他们的值,但是没有效果,所以不用去试了。
我的具体思路其实差不多,viewpagewr的滑动其实调用的是determineTargetPage
方法,源码是这样的:
private int determineTargetPage(int currentPage, float pageOffset, int velocity, int deltaX) {
int targetPage;
if (Math.abs(deltaX) > mFlingDistance && Math.abs(velocity) > mMinimumVelocity) {
targetPage = velocity > 0 ? currentPage : currentPage + 1;
} else {
final float truncator = currentPage >= mCurItem ? 0.4f : 0.6f;
targetPage = currentPage + (int) (pageOffset + truncator);
}
if (mItems.size() > 0) {
final ItemInfo firstItem = mItems.get(0);
final ItemInfo lastItem = mItems.get(mItems.size() - 1);
//