美文网首页
viewpager触摸自动暂停播放

viewpager触摸自动暂停播放

作者: 大胡子的机器人 | 来源:发表于2019-03-21 11:19 被阅读0次

我这里是实现banner自动播放,需要实现viewpager自动轮播,并且触摸时自动暂停播放。播放的照片可以缩放。
效果图:


自动轮播相册.png

网上错误的解决方法:
1、给viewpager直接设置setOnTouchListener监听,测试不行。不能监测到ACTION_DOWN事件,失败。
2、给viewpager页面的imageview设置setOnTouchListener监听,测试不行,由于我的是采用的第三方可拖拽缩放的com.bm.library.PhotoView控件,本身有触摸等功能,不好改。
3、我现在可行的方案:重写viewpager,把dispatchTouchEvent中的ACTION_DOWN和ACTION_UP事件不拦截,回调出来。

代码如下:

public class ImageDetailViewpager extends ViewPager {
public ImageDetailViewpager(@NonNull Context context) {
    super(context);
}

public ImageDetailViewpager(@NonNull Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            if (listener != null) {
                listener.onTouchDown();
            }
            break;
        case MotionEvent.ACTION_UP:
            if (listener != null) {
                listener.onTouchUp();
            }
            break;
        default:
            break;
    }
    return super.dispatchTouchEvent(ev);
}

private OnViewPagerTouchEvent listener;

public void setOnViewPagerTouchEventListener(OnViewPagerTouchEvent l){
    listener = l;
}

public interface OnViewPagerTouchEvent{
    void onTouchDown();
    void onTouchUp();
}
}

相关文章

网友评论

      本文标题:viewpager触摸自动暂停播放

      本文链接:https://www.haomeiwen.com/subject/rnqqvqtx.html