viewpager 竖着滑动

package me.kaelaela.verticalviewpager;import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;import me.kaelaela.verticalviewpager.transforms.DefaultTransformer;public class VerticalViewPager extends ViewPager { public VerticalViewPager(Context context) { this(context, null); } public VerticalViewPager(Context context, AttributeSet attrs) { super(context, attrs); setPageTransformer(false, new DefaultTransformer()); } private MotionEvent swapTouchEvent(MotionEvent event) { float width = getWidth(); float height = getHeight(); float swappedX = (event.getY() / height) * width; float swappedY = (event.getX() / width) * height; event.setLocation(swappedX, swappedY); return event; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { boolean intercept = super.onInterceptTouchEvent(swapTouchEvent(event)); //If not intercept, touch event should not be swapped. swapTouchEvent(event); return intercept; } @Override public boolean onTouchEvent(MotionEvent ev) { return super.onTouchEvent(swapTouchEvent(ev)); } //viewpager 是否可以滑动的 true 滑动 false 禁止滑动 private boolean isCanScroll = true; public void setScanScroll(boolean isCanScroll){ this.isCanScroll = isCanScroll; } @Override public void scrollTo(int x, int y){ if (isCanScroll){ super.scrollTo(x, y); } }}翻页时的透明变化 package me.kaelaela.verticalviewpager.transforms;import android.support.v4.view.ViewPager;import android.view.View;public class DefaultTransformer implements ViewPager.PageTransformer { @Override public void transformPage(View view, float position) { float alpha = 0; if (0 <= position && position <= 1) { alpha = 1 - position; } else if (-1 < position && position < 0) { alpha = position + 1; } view.setAlpha(alpha); view.setTranslationX(view.getWidth() * -position); float yPosition = position * view.getHeight(); view.setTranslationY(yPosition); }}使用方法和普通的viewpager 一样使用。做项目要求某种情况下ViewPager不能滑动,有说重写Ontouch的,各种。都试了试,基本都不可用。 自己看ViewPager源码,知道VIewPager移动全部都调用了scrollTo方法,这个是View的方法,那么我们只需要重写这个方法就可以禁止ViewPager滑动
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值