Java tutorial
/* * Copyright by Netease (c) 2016. * This source code is licensed under the MIT-style license found in the LICENSE file * in the root directory of this source tree. */ package com.netease.hearttouch.htimagepicker.core.view.photoview; import android.content.Context; import android.support.annotation.NonNull; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; /** * Created by liuhongtao on 15/7/23. */ public class PhotoViewPager extends ViewPager { public PhotoViewPager(Context context) { super(context); } public PhotoViewPager(Context context, AttributeSet attrs) { super(context, attrs); addOnPageChangeListener(new InnerOnPageChangeListenerImp()); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { try { return super.onInterceptTouchEvent(ev); } catch (Exception e) { // ignore it } return false; } @Override public boolean onTouchEvent(MotionEvent ev) { try { return super.onTouchEvent(ev); } catch (IllegalArgumentException ex) { // ignore it } return false; } private boolean mIsDisallowIntercept = false; @Override public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) { mIsDisallowIntercept = disallowIntercept; super.requestDisallowInterceptTouchEvent(disallowIntercept); } @Override public boolean dispatchTouchEvent(@NonNull MotionEvent ev) { if (ev.getPointerCount() > 1 && mIsDisallowIntercept) { requestDisallowInterceptTouchEvent(false); boolean handled = super.dispatchTouchEvent(ev); requestDisallowInterceptTouchEvent(true); return handled; } else { return super.dispatchTouchEvent(ev); } } private class InnerOnPageChangeListenerImp implements OnPageChangeListener { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { PagerAdapter adapter = getAdapter(); if (adapter instanceof ViewPagerAdapter) { ((ViewPagerAdapter) adapter).resetPhotoViews(); } } @Override public void onPageScrollStateChanged(int state) { } } }