package android.support.v4.view; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build.VERSION; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable.Creator; import android.os.SystemClock; import android.support.v4.os.ParcelableCompat; import android.support.v4.os.ParcelableCompatCreatorCallbacks; import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; import android.support.v4.widget.EdgeEffectCompat; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.FloatMath; import android.util.Log; import android.view.FocusFinder; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.SoundEffectConstants; import android.view.VelocityTracker; import android.view.View; import android.view.View.BaseSavedState; import android.view.View.MeasureSpec; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.ViewParent; import android.view.accessibility.AccessibilityEvent; import android.view.animation.Interpolator; import android.widget.Scroller; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class ViewPager extends ViewGroup { private static final int CLOSE_ENOUGH = 2; private static final Comparator<ItemInfo> COMPARATOR = new Comparator() { public int compare(ViewPager.ItemInfo paramAnonymousItemInfo1, ViewPager.ItemInfo paramAnonymousItemInfo2) { return paramAnonymousItemInfo1.position - paramAnonymousItemInfo2.position; } }; private static final boolean DEBUG = false; private static final int DEFAULT_GUTTER_SIZE = 16; private static final int DEFAULT_OFFSCREEN_PAGES = 1; private static final int DRAW_ORDER_DEFAULT = 0; private static final int DRAW_ORDER_FORWARD = 1; private static final int DRAW_ORDER_REVERSE = 2; private static final int INVALID_POINTER = -1; private static final int[] LAYOUT_ATTRS; private static final int MAX_SETTLE_DURATION = 600; private static final int MIN_DISTANCE_FOR_FLING = 25; public static final int SCROLL_STATE_DRAGGING = 1; public static final int SCROLL_STATE_IDLE = 0; public static final int SCROLL_STATE_SETTLING = 2; private static final String TAG = "ViewPager"; private static final boolean USE_CACHE; private static final Interpolator sInterpolator = new Interpolator() { public float getInterpolation(float paramAnonymousFloat) { float f = paramAnonymousFloat - 1.0F; return 1.0F + f * (f * (f * (f * f))); } }; private static final ViewPositionComparator sPositionComparator = new ViewPositionComparator(); private int mActivePointerId = -1; private PagerAdapter mAdapter; private OnAdapterChangeListener mAdapterChangeListener; private int mBottomPageBounds; private boolean mCalledSuper; private int mChildHeightMeasureSpec; private int mChildWidthMeasureSpec; private int mCloseEnough; private int mCurItem; private int mDecorChildCount; private int mDefaultGutterSize; private int mDrawingOrder; private ArrayList<View> mDrawingOrderedChildren; private final Runnable mEndScrollRunnable = new Runnable() { public void run() { ViewPager.this.setScrollState(0); ViewPager.this.populate(); } }; private long mFakeDragBeginTime; private boolean mFakeDragging; private boolean mFirstLayout = true; private float mFirstOffset = -3.402824E+038F; private int mFlingDistance; private int mGutterSize; private boolean mIgnoreGutter; private boolean mInLayout; private float mInitialMotionX; private OnPageChangeListener mInternalPageChangeListener; private boolean mIsBeingDragged; private boolean mIsUnableToDrag; private final ArrayList<ItemInfo> mItems = new ArrayList(); private float mLastMotionX; private float mLastMotionY; private float mLastOffset = 3.4028235E+38F; private EdgeEffectCompat mLeftEdge; private Drawable mMarginDrawable; private int mMaximumVelocity; private int mMinimumVelocity; private boolean mNeedCalculatePageOffsets = false; private PagerObserver mObserver; private int mOffscreenPageLimit = 1; private OnPageChangeListener mOnPageChangeListener; private int mPageMargin; private PageTransformer mPageTransformer; private boolean mPopulatePending; private Parcelable mRestoredAdapterState = null; private ClassLoader mRestoredClassLoader = null; private int mRestoredCurItem = -1; private EdgeEffectCompat mRightEdge; private int mScrollState = 0; private Scroller mScroller; private boolean mScrollingCacheEnabled; private int mSeenPositionMax; private int mSeenPositionMin; private Method mSetChildrenDrawingOrderEnabled; private final ItemInfo mTempItem = new ItemInfo(); private final Rect mTempRect = new Rect(); private int mTopPageBounds; private int mTouchSlop; private VelocityTracker mVelocityTracker; static { int[] arrayOfInt = new int[1]; arrayOfInt[0] = 16842931; LAYOUT_ATTRS = arrayOfInt; } public ViewPager(Context paramContext) { super(paramContext); initViewPager(); } public ViewPager(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); initViewPager(); } private void calculatePageOffsets(ItemInfo paramItemInfo1, int paramInt, ItemInfo paramItemInfo2) { int i = this.mAdapter.getCount(); int j = getWidth(); float f1; int i5; int i8; float f7; if (j > 0) { f1 = this.mPageMargin / j; if (paramItemInfo2 == null) { break label373; } i5 = paramItemInfo2.position; if (i5 < paramItemInfo1.position) { i8 = 0; f7 = f1 + (paramItemInfo2.offset + paramItemInfo2.widthFactor); } } else { for (int i9 = i5 + 1;; i9++) { if ((i9 > paramItemInfo1.position) || (i8 >= this.mItems.size())) { break label373; } ItemInfo localItemInfo4 = (ItemInfo)this.mItems.get(i8); for (;;) { if ((i9 > localItemInfo4.position) && (i8 < -1 + this.mItems.size())) { i8++; localItemInfo4 = (ItemInfo)this.mItems.get(i8); continue; f1 = 0.0F; break; } } while (i9 < localItemInfo4.position) { f7 += f1 + this.mAdapter.getPageWidth(i9); i9++; } localItemInfo4.offset = f7; f7 += f1 + localItemInfo4.widthFactor; } } if (i5 > paramItemInfo1.position) { int i6 = -1 + this.mItems.size(); float f6 = paramItemInfo2.offset; for (int i7 = i5 - 1; (i7 >= paramItemInfo1.position) && (i6 >= 0); i7--) { for (ItemInfo localItemInfo3 = (ItemInfo)this.mItems.get(i6); (i7 < localItemInfo3.position) && (i6 > 0); localItemInfo3 = (ItemInfo)this.mItems.get(i6)) { i6--; } while (i7 > localItemInfo3.position) { f6 -= f1 + this.mAdapter.getPageWidth(i7); i7--; } f6 -= f1 + localItemInfo3.widthFactor; localItemInfo3.offset = f6; } } label373: int k = this.mItems.size(); float f2 = paramItemInfo1.offset; int m = -1 + paramItemInfo1.position; float f3; float f4; label440: int n; if (paramItemInfo1.position == 0) { f3 = paramItemInfo1.offset; this.mFirstOffset = f3; if (paramItemInfo1.position != i - 1) { break label521; } f4 = paramItemInfo1.offset + paramItemInfo1.widthFactor - 1.0F; this.mLastOffset = f4; n = paramInt - 1; } for (;;) { if (n < 0) { break label571; } ItemInfo localItemInfo2 = (ItemInfo)this.mItems.get(n); for (;;) { if (m > localItemInfo2.position) { PagerAdapter localPagerAdapter2 = this.mAdapter; int i4 = m - 1; f2 -= f1 + localPagerAdapter2.getPageWidth(m); m = i4; continue; f3 = -3.402824E+038F; break; label521: f4 = 3.4028235E+38F; break label440; } } f2 -= f1 + localItemInfo2.widthFactor; localItemInfo2.offset = f2; if (localItemInfo2.position == 0) { this.mFirstOffset = f2; } n--; m--; } label571: float f5 = f1 + (paramItemInfo1.offset + paramItemInfo1.widthFactor); int i1 = 1 + paramItemInfo1.position; int i2 = paramInt + 1; while (i2 < k) { ItemInfo localItemInfo1 = (ItemInfo)this.mItems.get(i2); while (i1 < localItemInfo1.position) { PagerAdapter localPagerAdapter1 = this.mAdapter; int i3 = i1 + 1; f5 += f1 + localPagerAdapter1.getPageWidth(i1); i1 = i3; } if (localItemInfo1.position == i - 1) { this.mLastOffset = (f5 + localItemInfo1.widthFactor - 1.0F); } localItemInfo1.offset = f5; f5 += f1 + localItemInfo1.widthFactor; i2++; i1++; } this.mNeedCalculatePageOffsets = false; } private void completeScroll(boolean paramBoolean) { if (this.mScrollState == 2) {} for (int i = 1;; i = 0) { if (i != 0) { setScrollingCacheEnabled(false); this.mScroller.abortAnimation(); int k = getScrollX(); int m = getScrollY(); int n = this.mScroller.getCurrX(); int i1 = this.mScroller.getCurrY(); if ((k != n) || (m != i1)) { scrollTo(n, i1); } } this.mPopulatePending = false; for (int j = 0; j < this.mItems.size(); j++) { ItemInfo localItemInfo = (ItemInfo)this.mItems.get(j); if (localItemInfo.scrolling) { i = 1; localItemInfo.scrolling = false; } } } if (i != 0) { if (!paramBoolean) { break label153; } ViewCompat.postOnAnimation(this, this.mEndScrollRunnable); } for (;;) { return; label153: this.mEndScrollRunnable.run(); } } private int determineTargetPage(int paramInt1, float paramFloat, int paramInt2, int paramInt3) { int i; if ((Math.abs(paramInt3) > this.mFlingDistance) && (Math.abs(paramInt2) > this.mMinimumVelocity)) { if (paramInt2 > 0) { i = paramInt1; } } for (;;) { if (this.mItems.size() > 0) { ItemInfo localItemInfo1 = (ItemInfo)this.mItems.get(0); ItemInfo localItemInfo2 = (ItemInfo)this.mItems.get(-1 + this.mItems.size()); i = Math.max(localItemInfo1.position, Math.min(i, localItemInfo2.position)); } return i; i = paramInt1 + 1; continue; if ((this.mSeenPositionMin >= 0) && (this.mSeenPositionMin < paramInt1) && (paramFloat < 0.5F)) { i = paramInt1 + 1; } else if ((this.mSeenPositionMax >= 0) && (this.mSeenPositionMax > paramInt1 + 1) && (paramFloat >= 0.5F)) { i = paramInt1 - 1; } else { i = (int)(0.5F + (paramFloat + paramInt1)); } } } private void enableLayers(boolean paramBoolean) { int i = getChildCount(); int j = 0; if (j < i) { if (paramBoolean) {} for (int k = 2;; k = 0) { ViewCompat.setLayerType(getChildAt(j), k, null); j++; break; } } } private void endDrag() { this.mIsBeingDragged = false; this.mIsUnableToDrag = false; if (this.mVelocityTracker != null) { this.mVelocityTracker.recycle(); this.mVelocityTracker = null; } } private Rect getChildRectInPagerCoordinates(Rect paramRect, View paramView) { if (paramRect == null) { paramRect = new Rect(); } if (paramView == null) { paramRect.set(0, 0, 0, 0); } for (;;) { return paramRect; paramRect.left = paramView.getLeft(); paramRect.right = paramView.getRight(); paramRect.top = paramView.getTop(); paramRect.bottom = paramView.getBottom(); ViewGroup localViewGroup; for (ViewParent localViewParent = paramView.getParent(); ((localViewParent instanceof ViewGroup)) && (localViewParent != this); localViewParent = localViewGroup.getParent()) { localViewGroup = (ViewGroup)localViewParent; paramRect.left += localViewGroup.getLeft(); paramRect.right += localViewGroup.getRight(); paramRect.top += localViewGroup.getTop(); paramRect.bottom += localViewGroup.getBottom(); } } } private ItemInfo infoForCurrentScrollPosition() { float f1 = 0.0F; int i = getWidth(); float f2; int j; float f3; float f4; int k; Object localObject; if (i > 0) { f2 = getScrollX() / i; if (i > 0) { f1 = this.mPageMargin / i; } j = -1; f3 = 0.0F; f4 = 0.0F; k = 1; localObject = null; } for (int m = 0;; m++) { ItemInfo localItemInfo; float f5; if (m < this.mItems.size()) { localItemInfo = (ItemInfo)this.mItems.get(m); if ((k == 0) && (localItemInfo.position != j + 1)) { localItemInfo = this.mTempItem; localItemInfo.offset = (f1 + (f3 + f4)); localItemInfo.position = (j + 1); localItemInfo.widthFactor = this.mAdapter.getPageWidth(localItemInfo.position); m--; } f5 = localItemInfo.offset; float f6 = f1 + (f5 + localItemInfo.widthFactor); if ((k != 0) || (f2 >= f5)) { if ((f2 >= f6) && (m != -1 + this.mItems.size())) { break label207; } localObject = localItemInfo; } } return localObject; f2 = 0.0F; break; label207: k = 0; j = localItemInfo.position; f3 = f5; f4 = localItemInfo.widthFactor; localObject = localItemInfo; } } private boolean isGutterDrag(float paramFloat1, float paramFloat2) { if (((paramFloat1 < this.mGutterSize) && (paramFloat2 > 0.0F)) || ((paramFloat1 > getWidth() - this.mGutterSize) && (paramFloat2 < 0.0F))) {} for (boolean bool = true;; bool = false) { return bool; } } private void onSecondaryPointerUp(MotionEvent paramMotionEvent) { int i = MotionEventCompat.getActionIndex(paramMotionEvent); if (MotionEventCompat.getPointerId(paramMotionEvent, i) == this.mActivePointerId) { if (i != 0) { break label56; } } label56: for (int j = 1;; j = 0) { this.mLastMotionX = MotionEventCompat.getX(paramMotionEvent, j); this.mActivePointerId = MotionEventCompat.getPointerId(paramMotionEvent, j); if (this.mVelocityTracker != null) { this.mVelocityTracker.clear(); } return; } } private boolean pageScrolled(int paramInt) { boolean bool = false; if (this.mItems.size() == 0) { this.mCalledSuper = false; onPageScrolled(0, 0.0F, 0); if (!this.mCalledSuper) { throw new IllegalStateException("onPageScrolled did not call superclass implementation"); } } else { ItemInfo localItemInfo = infoForCurrentScrollPosition(); int i = getWidth(); int j = i + this.mPageMargin; float f1 = this.mPageMargin / i; int k = localItemInfo.position; float f2 = (paramInt / i - localItemInfo.offset) / (f1 + localItemInfo.widthFactor); int m = (int)(f2 * j); this.mCalledSuper = false; onPageScrolled(k, f2, m); if (!this.mCalledSuper) { throw new IllegalStateException("onPageScrolled did not call superclass implementation"); } bool = true; } return bool; } private boolean performDrag(float paramFloat) { boolean bool = false; float f1 = this.mLastMotionX - paramFloat; this.mLastMotionX = paramFloat; float f2 = f1 + getScrollX(); int i = getWidth(); float f3 = i * this.mFirstOffset; float f4 = i * this.mLastOffset; int j = 1; int k = 1; ItemInfo localItemInfo1 = (ItemInfo)this.mItems.get(0); ItemInfo localItemInfo2 = (ItemInfo)this.mItems.get(-1 + this.mItems.size()); if (localItemInfo1.position != 0) { j = 0; f3 = localItemInfo1.offset * i; } if (localItemInfo2.position != -1 + this.mAdapter.getCount()) { k = 0; f4 = localItemInfo2.offset * i; } if (f2 < f3) { if (j != 0) { float f6 = f3 - f2; bool = this.mLeftEdge.onPull(Math.abs(f6) / i); } f2 = f3; } for (;;) { this.mLastMotionX += f2 - (int)f2; scrollTo((int)f2, getScrollY()); pageScrolled((int)f2); return bool; if (f2 > f4) { if (k != 0) { float f5 = f2 - f4; bool = this.mRightEdge.onPull(Math.abs(f5) / i); } f2 = f4; } } } private void recomputeScrollPosition(int paramInt1, int paramInt2, int paramInt3, int paramInt4) { if ((paramInt2 > 0) && (!this.mItems.isEmpty())) { int j = paramInt1 + paramInt3; int k = paramInt2 + paramInt4; int m = (int)(getScrollX() / k * j); scrollTo(m, getScrollY()); if (!this.mScroller.isFinished()) { int n = this.mScroller.getDuration() - this.mScroller.timePassed(); ItemInfo localItemInfo2 = infoForPosition(this.mCurItem); this.mScroller.startScroll(m, 0, (int)(localItemInfo2.offset * paramInt1), 0, n); } return; } ItemInfo localItemInfo1 = infoForPosition(this.mCurItem); if (localItemInfo1 != null) {} for (float f = Math.min(localItemInfo1.offset, this.mLastOffset);; f = 0.0F) { int i = (int)(f * paramInt1); if (i == getScrollX()) { break; } completeScroll(false); scrollTo(i, getScrollY()); break; } } private void removeNonDecorViews() { for (int i = 0; i < getChildCount(); i++) { if (!((LayoutParams)getChildAt(i).getLayoutParams()).isDecor) { removeViewAt(i); i--; } } } private void scrollToItem(int paramInt1, boolean paramBoolean1, int paramInt2, boolean paramBoolean2) { ItemInfo localItemInfo = infoForPosition(paramInt1); int i = 0; if (localItemInfo != null) { i = (int)(getWidth() * Math.max(this.mFirstOffset, Math.min(localItemInfo.offset, this.mLastOffset))); } if (paramBoolean1) { smoothScrollTo(i, 0, paramInt2); if ((paramBoolean2) && (this.mOnPageChangeListener != null)) { this.mOnPageChangeListener.onPageSelected(paramInt1); } if ((paramBoolean2) && (this.mInternalPageChangeListener != null)) { this.mInternalPageChangeListener.onPageSelected(paramInt1); } } for (;;) { return; if ((paramBoolean2) && (this.mOnPageChangeListener != null)) { this.mOnPageChangeListener.onPageSelected(paramInt1); } if ((paramBoolean2) && (this.mInternalPageChangeListener != null)) { this.mInternalPageChangeListener.onPageSelected(paramInt1); } completeScroll(false); scrollTo(i, 0); } } private void setScrollState(int paramInt) { int i = 1; if (this.mScrollState == paramInt) { return; } this.mScrollState = paramInt; if (paramInt == i) { this.mSeenPositionMax = -1; this.mSeenPositionMin = -1; } if (this.mPageTransformer != null) { if (paramInt == 0) { break label69; } } for (;;) { enableLayers(i); if (this.mOnPageChangeListener == null) { break; } this.mOnPageChangeListener.onPageScrollStateChanged(paramInt); break; label69: i = 0; } } private void setScrollingCacheEnabled(boolean paramBoolean) { if (this.mScrollingCacheEnabled != paramBoolean) { this.mScrollingCacheEnabled = paramBoolean; } } public void addFocusables(ArrayList<View> paramArrayList, int paramInt1, int paramInt2) { int i = paramArrayList.size(); int j = getDescendantFocusability(); if (j != 393216) { for (int k = 0; k < getChildCount(); k++) { View localView = getChildAt(k); if (localView.getVisibility() == 0) { ItemInfo localItemInfo = infoForChild(localView); if ((localItemInfo != null) && (localItemInfo.position == this.mCurItem)) { localView.addFocusables(paramArrayList, paramInt1, paramInt2); } } } } if (((j == 262144) && (i != paramArrayList.size())) || (!isFocusable())) {} for (;;) { return; if ((((paramInt2 & 0x1) != 1) || (!isInTouchMode()) || (isFocusableInTouchMode())) && (paramArrayList != null)) { paramArrayList.add(this); } } } ItemInfo addNewItem(int paramInt1, int paramInt2) { ItemInfo localItemInfo = new ItemInfo(); localItemInfo.position = paramInt1; localItemInfo.object = this.mAdapter.instantiateItem(this, paramInt1); localItemInfo.widthFactor = this.mAdapter.getPageWidth(paramInt1); if ((paramInt2 < 0) || (paramInt2 >= this.mItems.size())) { this.mItems.add(localItemInfo); } for (;;) { return localItemInfo; this.mItems.add(paramInt2, localItemInfo); } } public void addTouchables(ArrayList<View> paramArrayList) { for (int i = 0; i < getChildCount(); i++) { View localView = getChildAt(i); if (localView.getVisibility() == 0) { ItemInfo localItemInfo = infoForChild(localView); if ((localItemInfo != null) && (localItemInfo.position == this.mCurItem)) { localView.addTouchables(paramArrayList); } } } } public void addView(View paramView, int paramInt, ViewGroup.LayoutParams paramLayoutParams) { if (!checkLayoutParams(paramLayoutParams)) { paramLayoutParams = generateLayoutParams(paramLayoutParams); } LayoutParams localLayoutParams = (LayoutParams)paramLayoutParams; localLayoutParams.isDecor |= paramView instanceof Decor; if (this.mInLayout) { if ((localLayoutParams != null) && (localLayoutParams.isDecor)) { throw new IllegalStateException("Cannot add pager decor view during layout"); } localLayoutParams.needsMeasure = true; addViewInLayout(paramView, paramInt, paramLayoutParams); } for (;;) { return; super.addView(paramView, paramInt, paramLayoutParams); } } public boolean arrowScroll(int paramInt) { View localView1 = findFocus(); if (localView1 == this) { localView1 = null; } boolean bool = false; View localView2 = FocusFinder.getInstance().findNextFocus(this, localView1, paramInt); if ((localView2 != null) && (localView2 != localView1)) { if (paramInt == 17) { int k = getChildRectInPagerCoordinates(this.mTempRect, localView2).left; int m = getChildRectInPagerCoordinates(this.mTempRect, localView1).left; if ((localView1 != null) && (k >= m)) { bool = pageLeft(); } } } for (;;) { if (bool) { playSoundEffect(SoundEffectConstants.getContantForFocusDirection(paramInt)); } return bool; bool = localView2.requestFocus(); continue; if (paramInt == 66) { int i = getChildRectInPagerCoordinates(this.mTempRect, localView2).left; int j = getChildRectInPagerCoordinates(this.mTempRect, localView1).left; if ((localView1 != null) && (i <= j)) { bool = pageRight(); } else { bool = localView2.requestFocus(); continue; if ((paramInt == 17) || (paramInt == 1)) { bool = pageLeft(); } else if ((paramInt == 66) || (paramInt == 2)) { bool = pageRight(); } } } } } public boolean beginFakeDrag() { boolean bool = false; if (this.mIsBeingDragged) { return bool; } this.mFakeDragging = true; setScrollState(1); this.mLastMotionX = 0.0F; this.mInitialMotionX = 0.0F; if (this.mVelocityTracker == null) { this.mVelocityTracker = VelocityTracker.obtain(); } for (;;) { long l = SystemClock.uptimeMillis(); MotionEvent localMotionEvent = MotionEvent.obtain(l, l, 0, 0.0F, 0.0F, 0); this.mVelocityTracker.addMovement(localMotionEvent); localMotionEvent.recycle(); this.mFakeDragBeginTime = l; bool = true; break; this.mVelocityTracker.clear(); } } protected boolean canScroll(View paramView, boolean paramBoolean, int paramInt1, int paramInt2, int paramInt3) { int k; boolean bool; if ((paramView instanceof ViewGroup)) { ViewGroup localViewGroup = (ViewGroup)paramView; int i = paramView.getScrollX(); int j = paramView.getScrollY(); k = -1 + localViewGroup.getChildCount(); if (k >= 0) { View localView = localViewGroup.getChildAt(k); if ((paramInt2 + i >= localView.getLeft()) && (paramInt2 + i < localView.getRight()) && (paramInt3 + j >= localView.getTop()) && (paramInt3 + j < localView.getBottom()) && (canScroll(localView, true, paramInt1, paramInt2 + i - localView.getLeft(), paramInt3 + j - localView.getTop()))) { bool = true; } } } for (;;) { return bool; k--; break; if ((paramBoolean) && (ViewCompat.canScrollHorizontally(paramView, -paramInt1))) { bool = true; } else { bool = false; } } } protected boolean checkLayoutParams(ViewGroup.LayoutParams paramLayoutParams) { if (((paramLayoutParams instanceof LayoutParams)) && (super.checkLayoutParams(paramLayoutParams))) {} for (boolean bool = true;; bool = false) { return bool; } } public void computeScroll() { if ((!this.mScroller.isFinished()) && (this.mScroller.computeScrollOffset())) { int i = getScrollX(); int j = getScrollY(); int k = this.mScroller.getCurrX(); int m = this.mScroller.getCurrY(); if ((i != k) || (j != m)) { scrollTo(k, m); if (!pageScrolled(k)) { this.mScroller.abortAnimation(); scrollTo(0, m); } } ViewCompat.postInvalidateOnAnimation(this); } for (;;) { return; completeScroll(true); } } void dataSetChanged() { int i; int j; int k; int m; label47: ItemInfo localItemInfo; int i2; if ((this.mItems.size() < 1 + 2 * this.mOffscreenPageLimit) && (this.mItems.size() < this.mAdapter.getCount())) { i = 1; j = this.mCurItem; k = 0; m = 0; if (m >= this.mItems.size()) { break label235; } localItemInfo = (ItemInfo)this.mItems.get(m); i2 = this.mAdapter.getItemPosition(localItemInfo.object); if (i2 != -1) { break label105; } } for (;;) { m++; break label47; i = 0; break; label105: if (i2 == -2) { this.mItems.remove(m); m--; if (k == 0) { this.mAdapter.startUpdate(this); k = 1; } this.mAdapter.destroyItem(this, localItemInfo.position, localItemInfo.object); i = 1; if (this.mCurItem == localItemInfo.position) { j = Math.max(0, Math.min(this.mCurItem, -1 + this.mAdapter.getCount())); i = 1; } } else if (localItemInfo.position != i2) { if (localItemInfo.position == this.mCurItem) { j = i2; } localItemInfo.position = i2; i = 1; } } label235: if (k != 0) { this.mAdapter.finishUpdate(this); } Collections.sort(this.mItems, COMPARATOR); if (i != 0) { int n = getChildCount(); for (int i1 = 0; i1 < n; i1++) { LayoutParams localLayoutParams = (LayoutParams)getChildAt(i1).getLayoutParams(); if (!localLayoutParams.isDecor) { localLayoutParams.widthFactor = 0.0F; } } setCurrentItemInternal(j, false, true); requestLayout(); } } public boolean dispatchKeyEvent(KeyEvent paramKeyEvent) { if ((super.dispatchKeyEvent(paramKeyEvent)) || (executeKeyEvent(paramKeyEvent))) {} for (boolean bool = true;; bool = false) { return bool; } } public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent paramAccessibilityEvent) { int i = getChildCount(); int j = 0; if (j < i) { View localView = getChildAt(j); if (localView.getVisibility() == 0) { ItemInfo localItemInfo = infoForChild(localView); if ((localItemInfo == null) || (localItemInfo.position != this.mCurItem) || (!localView.dispatchPopulateAccessibilityEvent(paramAccessibilityEvent))) {} } } for (boolean bool = true;; bool = false) { return bool; j++; break; } } float distanceInfluenceForSnapDuration(float paramFloat) { return (float)Math.sin((float)(0.47123891676382D * (paramFloat - 0.5F))); } public void draw(Canvas paramCanvas) { super.draw(paramCanvas); boolean bool = false; int i = ViewCompat.getOverScrollMode(this); if ((i == 0) || ((i == 1) && (this.mAdapter != null) && (this.mAdapter.getCount() > 1))) { if (!this.mLeftEdge.isFinished()) { int n = paramCanvas.save(); int i1 = getHeight() - getPaddingTop() - getPaddingBottom(); int i2 = getWidth(); paramCanvas.rotate(270.0F); paramCanvas.translate(-i1 + getPaddingTop(), this.mFirstOffset * i2); this.mLeftEdge.setSize(i1, i2); bool = false | this.mLeftEdge.draw(paramCanvas); paramCanvas.restoreToCount(n); } if (!this.mRightEdge.isFinished()) { int j = paramCanvas.save(); int k = getWidth(); int m = getHeight() - getPaddingTop() - getPaddingBottom(); paramCanvas.rotate(90.0F); paramCanvas.translate(-getPaddingTop(), -(1.0F + this.mLastOffset) * k); this.mRightEdge.setSize(m, k); bool |= this.mRightEdge.draw(paramCanvas); paramCanvas.restoreToCount(j); } } for (;;) { if (bool) { ViewCompat.postInvalidateOnAnimation(this); } return; this.mLeftEdge.finish(); this.mRightEdge.finish(); } } protected void drawableStateChanged() { super.drawableStateChanged(); Drawable localDrawable = this.mMarginDrawable; if ((localDrawable != null) && (localDrawable.isStateful())) { localDrawable.setState(getDrawableState()); } } public void endFakeDrag() { if (!this.mFakeDragging) { throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first."); } VelocityTracker localVelocityTracker = this.mVelocityTracker; localVelocityTracker.computeCurrentVelocity(1000, this.mMaximumVelocity); int i = (int)VelocityTrackerCompat.getXVelocity(localVelocityTracker, this.mActivePointerId); this.mPopulatePending = true; int j = getWidth(); int k = getScrollX(); ItemInfo localItemInfo = infoForCurrentScrollPosition(); setCurrentItemInternal(determineTargetPage(localItemInfo.position, (k / j - localItemInfo.offset) / localItemInfo.widthFactor, i, (int)(this.mLastMotionX - this.mInitialMotionX)), true, true, i); endDrag(); this.mFakeDragging = false; } public boolean executeKeyEvent(KeyEvent paramKeyEvent) { boolean bool = false; if (paramKeyEvent.getAction() == 0) { switch (paramKeyEvent.getKeyCode()) { } } for (;;) { return bool; bool = arrowScroll(17); continue; bool = arrowScroll(66); continue; if (Build.VERSION.SDK_INT >= 11) { if (KeyEventCompat.hasNoModifiers(paramKeyEvent)) { bool = arrowScroll(2); } else if (KeyEventCompat.hasModifiers(paramKeyEvent, 1)) { bool = arrowScroll(1); } } } } public void fakeDragBy(float paramFloat) { if (!this.mFakeDragging) { throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first."); } this.mLastMotionX = (paramFloat + this.mLastMotionX); float f1 = getScrollX() - paramFloat; int i = getWidth(); float f2 = i * this.mFirstOffset; float f3 = i * this.mLastOffset; ItemInfo localItemInfo1 = (ItemInfo)this.mItems.get(0); ItemInfo localItemInfo2 = (ItemInfo)this.mItems.get(-1 + this.mItems.size()); if (localItemInfo1.position != 0) { f2 = localItemInfo1.offset * i; } if (localItemInfo2.position != -1 + this.mAdapter.getCount()) { f3 = localItemInfo2.offset * i; } if (f1 < f2) { f1 = f2; } for (;;) { this.mLastMotionX += f1 - (int)f1; scrollTo((int)f1, getScrollY()); pageScrolled((int)f1); long l = SystemClock.uptimeMillis(); MotionEvent localMotionEvent = MotionEvent.obtain(this.mFakeDragBeginTime, l, 2, this.mLastMotionX, 0.0F, 0); this.mVelocityTracker.addMovement(localMotionEvent); localMotionEvent.recycle(); return; if (f1 > f3) { f1 = f3; } } } protected ViewGroup.LayoutParams generateDefaultLayoutParams() { return new LayoutParams(); } public ViewGroup.LayoutParams generateLayoutParams(AttributeSet paramAttributeSet) { return new LayoutParams(getContext(), paramAttributeSet); } protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams paramLayoutParams) { return generateDefaultLayoutParams(); } public PagerAdapter getAdapter() { return this.mAdapter; } protected int getChildDrawingOrder(int paramInt1, int paramInt2) { if (this.mDrawingOrder == 2) {} for (int i = paramInt1 - 1 - paramInt2;; i = paramInt2) { return ((LayoutParams)((View)this.mDrawingOrderedChildren.get(i)).getLayoutParams()).childIndex; } } public int getCurrentItem() { return this.mCurItem; } public int getOffscreenPageLimit() { return this.mOffscreenPageLimit; } public int getPageMargin() { return this.mPageMargin; } ItemInfo infoForAnyChild(View paramView) { ViewParent localViewParent = paramView.getParent(); if (localViewParent != this) { if ((localViewParent != null) && ((localViewParent instanceof View))) {} } for (ItemInfo localItemInfo = null;; localItemInfo = infoForChild(paramView)) { return localItemInfo; paramView = (View)localViewParent; break; } } ItemInfo infoForChild(View paramView) { int i = 0; ItemInfo localItemInfo; if (i < this.mItems.size()) { localItemInfo = (ItemInfo)this.mItems.get(i); if (!this.mAdapter.isViewFromObject(paramView, localItemInfo.object)) {} } for (;;) { return localItemInfo; i++; break; localItemInfo = null; } } ItemInfo infoForPosition(int paramInt) { int i = 0; ItemInfo localItemInfo; if (i < this.mItems.size()) { localItemInfo = (ItemInfo)this.mItems.get(i); if (localItemInfo.position != paramInt) {} } for (;;) { return localItemInfo; i++; break; localItemInfo = null; } } void initViewPager() { setWillNotDraw(false); setDescendantFocusability(262144); setFocusable(true); Context localContext = getContext(); this.mScroller = new Scroller(localContext, sInterpolator); ViewConfiguration localViewConfiguration = ViewConfiguration.get(localContext); this.mTouchSlop = ViewConfigurationCompat.getScaledPagingTouchSlop(localViewConfiguration); this.mMinimumVelocity = localViewConfiguration.getScaledMinimumFlingVelocity(); this.mMaximumVelocity = localViewConfiguration.getScaledMaximumFlingVelocity(); this.mLeftEdge = new EdgeEffectCompat(localContext); this.mRightEdge = new EdgeEffectCompat(localContext); float f = localContext.getResources().getDisplayMetrics().density; this.mFlingDistance = ((int)(25.0F * f)); this.mCloseEnough = ((int)(2.0F * f)); this.mDefaultGutterSize = ((int)(16.0F * f)); ViewCompat.setAccessibilityDelegate(this, new MyAccessibilityDelegate()); if (ViewCompat.getImportantForAccessibility(this) == 0) { ViewCompat.setImportantForAccessibility(this, 1); } } public boolean isFakeDragging() { return this.mFakeDragging; } protected void onAttachedToWindow() { super.onAttachedToWindow(); this.mFirstLayout = true; } protected void onDetachedFromWindow() { removeCallbacks(this.mEndScrollRunnable); super.onDetachedFromWindow(); } protected void onDraw(Canvas paramCanvas) { super.onDraw(paramCanvas); int i; int j; float f1; int k; ItemInfo localItemInfo; float f2; int m; int n; int i1; if ((this.mPageMargin > 0) && (this.mMarginDrawable != null) && (this.mItems.size() > 0) && (this.mAdapter != null)) { i = getScrollX(); j = getWidth(); f1 = this.mPageMargin / j; k = 0; localItemInfo = (ItemInfo)this.mItems.get(0); f2 = localItemInfo.offset; m = this.mItems.size(); n = localItemInfo.position; i1 = ((ItemInfo)this.mItems.get(m - 1)).position; } for (int i2 = n;; i2++) { float f4; if (i2 < i1) { while ((i2 > localItemInfo.position) && (k < m)) { ArrayList localArrayList = this.mItems; k++; localItemInfo = (ItemInfo)localArrayList.get(k); } if (i2 != localItemInfo.position) { break label272; } f4 = (localItemInfo.offset + localItemInfo.widthFactor) * j; } label272: float f3; for (f2 = f1 + (localItemInfo.offset + localItemInfo.widthFactor);; f2 += f3 + f1) { if (f4 + this.mPageMargin > i) { this.mMarginDrawable.setBounds((int)f4, this.mTopPageBounds, (int)(0.5F + (f4 + this.mPageMargin)), this.mBottomPageBounds); this.mMarginDrawable.draw(paramCanvas); } if (f4 <= i + j) { break; } return; f3 = this.mAdapter.getPageWidth(i2); f4 = (f2 + f3) * j; } } } public boolean onInterceptTouchEvent(MotionEvent paramMotionEvent) { int i = 0xFF & paramMotionEvent.getAction(); boolean bool; if ((i == 3) || (i == 1)) { this.mIsBeingDragged = false; this.mIsUnableToDrag = false; this.mActivePointerId = -1; if (this.mVelocityTracker != null) { this.mVelocityTracker.recycle(); this.mVelocityTracker = null; } bool = false; } for (;;) { return bool; if (i == 0) { break; } if (this.mIsBeingDragged) { bool = true; } else { if (!this.mIsUnableToDrag) { break; } bool = false; } } switch (i) { } for (;;) { if (this.mVelocityTracker == null) { this.mVelocityTracker = VelocityTracker.obtain(); } this.mVelocityTracker.addMovement(paramMotionEvent); bool = this.mIsBeingDragged; break; int j = this.mActivePointerId; if (j != -1) { int k = MotionEventCompat.findPointerIndex(paramMotionEvent, j); float f2 = MotionEventCompat.getX(paramMotionEvent, k); float f3 = f2 - this.mLastMotionX; float f4 = Math.abs(f3); float f5 = MotionEventCompat.getY(paramMotionEvent, k); float f6 = Math.abs(f5 - this.mLastMotionY); if ((f3 != 0.0F) && (!isGutterDrag(this.mLastMotionX, f3)) && (canScroll(this, false, (int)f3, (int)f2, (int)f5))) { this.mLastMotionX = f2; this.mInitialMotionX = f2; this.mLastMotionY = f5; this.mIsUnableToDrag = true; bool = false; break; } float f7; if ((f4 > this.mTouchSlop) && (f4 > f6)) { this.mIsBeingDragged = true; setScrollState(1); if (f3 > 0.0F) { f7 = this.mInitialMotionX + this.mTouchSlop; label329: this.mLastMotionX = f7; setScrollingCacheEnabled(true); } } while ((this.mIsBeingDragged) && (performDrag(f2))) { ViewCompat.postInvalidateOnAnimation(this); break; f7 = this.mInitialMotionX - this.mTouchSlop; break label329; if (f6 > this.mTouchSlop) { this.mIsUnableToDrag = true; } } float f1 = paramMotionEvent.getX(); this.mInitialMotionX = f1; this.mLastMotionX = f1; this.mLastMotionY = paramMotionEvent.getY(); this.mActivePointerId = MotionEventCompat.getPointerId(paramMotionEvent, 0); this.mIsUnableToDrag = false; this.mScroller.computeScrollOffset(); if ((this.mScrollState == 2) && (Math.abs(this.mScroller.getFinalX() - this.mScroller.getCurrX()) > this.mCloseEnough)) { this.mScroller.abortAnimation(); this.mPopulatePending = false; populate(); this.mIsBeingDragged = true; setScrollState(1); } else { completeScroll(false); this.mIsBeingDragged = false; continue; onSecondaryPointerUp(paramMotionEvent); } } } } protected void onLayout(boolean paramBoolean, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { this.mInLayout = true; populate(); this.mInLayout = false; int i = getChildCount(); int j = paramInt3 - paramInt1; int k = paramInt4 - paramInt2; int m = getPaddingLeft(); int n = getPaddingTop(); int i1 = getPaddingRight(); int i2 = getPaddingBottom(); int i3 = getScrollX(); int i4 = 0; int i5 = 0; if (i5 < i) { View localView2 = getChildAt(i5); int i11; label172: int i12; if (localView2.getVisibility() != 8) { LayoutParams localLayoutParams2 = (LayoutParams)localView2.getLayoutParams(); if (localLayoutParams2.isDecor) { int i9 = 0x7 & localLayoutParams2.gravity; int i10 = 0x70 & localLayoutParams2.gravity; switch (i9) { case 2: case 4: default: i11 = m; switch (i10) { default: i12 = n; } break; } } } for (;;) { int i13 = i11 + i3; localView2.layout(i13, i12, i13 + localView2.getMeasuredWidth(), i12 + localView2.getMeasuredHeight()); i4++; i5++; break; i11 = m; m += localView2.getMeasuredWidth(); break label172; i11 = Math.max((j - localView2.getMeasuredWidth()) / 2, m); break label172; i11 = j - i1 - localView2.getMeasuredWidth(); i1 += localView2.getMeasuredWidth(); break label172; i12 = n; n += localView2.getMeasuredHeight(); continue; i12 = Math.max((k - localView2.getMeasuredHeight()) / 2, n); continue; i12 = k - i2 - localView2.getMeasuredHeight(); i2 += localView2.getMeasuredHeight(); } } for (int i6 = 0; i6 < i; i6++) { View localView1 = getChildAt(i6); if (localView1.getVisibility() != 8) { LayoutParams localLayoutParams1 = (LayoutParams)localView1.getLayoutParams(); if (!localLayoutParams1.isDecor) { ItemInfo localItemInfo = infoForChild(localView1); if (localItemInfo != null) { int i7 = m + (int)(j * localItemInfo.offset); int i8 = n; if (localLayoutParams1.needsMeasure) { localLayoutParams1.needsMeasure = false; localView1.measure(View.MeasureSpec.makeMeasureSpec((int)((j - m - i1) * localLayoutParams1.widthFactor), 1073741824), View.MeasureSpec.makeMeasureSpec(k - n - i2, 1073741824)); } localView1.layout(i7, i8, i7 + localView1.getMeasuredWidth(), i8 + localView1.getMeasuredHeight()); } } } } this.mTopPageBounds = n; this.mBottomPageBounds = (k - i2); this.mDecorChildCount = i4; this.mFirstLayout = false; } protected void onMeasure(int paramInt1, int paramInt2) { setMeasuredDimension(getDefaultSize(0, paramInt1), getDefaultSize(0, paramInt2)); int i = getMeasuredWidth(); this.mGutterSize = Math.min(i / 10, this.mDefaultGutterSize); int j = i - getPaddingLeft() - getPaddingRight(); int k = getMeasuredHeight() - getPaddingTop() - getPaddingBottom(); int m = getChildCount(); int n = 0; if (n < m) { View localView2 = getChildAt(n); int i6; int i7; label167: int i8; if (localView2.getVisibility() != 8) { LayoutParams localLayoutParams2 = (LayoutParams)localView2.getLayoutParams(); if ((localLayoutParams2 != null) && (localLayoutParams2.isDecor)) { int i3 = 0x7 & localLayoutParams2.gravity; int i4 = 0x70 & localLayoutParams2.gravity; int i5 = -2147483648; i6 = -2147483648; if ((i4 != 48) && (i4 != 80)) { break label304; } i7 = 1; if ((i3 != 3) && (i3 != 5)) { break label310; } i8 = 1; label182: if (i7 == 0) { break label316; } i5 = 1073741824; label192: int i9 = j; int i10 = k; if (localLayoutParams2.width != -2) { i5 = 1073741824; if (localLayoutParams2.width != -1) { i9 = localLayoutParams2.width; } } if (localLayoutParams2.height != -2) { i6 = 1073741824; if (localLayoutParams2.height != -1) { i10 = localLayoutParams2.height; } } localView2.measure(View.MeasureSpec.makeMeasureSpec(i9, i5), View.MeasureSpec.makeMeasureSpec(i10, i6)); if (i7 == 0) { break label329; } k -= localView2.getMeasuredHeight(); } } for (;;) { n++; break; label304: i7 = 0; break label167; label310: i8 = 0; break label182; label316: if (i8 == 0) { break label192; } i6 = 1073741824; break label192; label329: if (i8 != 0) { j -= localView2.getMeasuredWidth(); } } } this.mChildWidthMeasureSpec = View.MeasureSpec.makeMeasureSpec(j, 1073741824); this.mChildHeightMeasureSpec = View.MeasureSpec.makeMeasureSpec(k, 1073741824); this.mInLayout = true; populate(); this.mInLayout = false; int i1 = getChildCount(); for (int i2 = 0; i2 < i1; i2++) { View localView1 = getChildAt(i2); if (localView1.getVisibility() != 8) { LayoutParams localLayoutParams1 = (LayoutParams)localView1.getLayoutParams(); if ((localLayoutParams1 == null) || (!localLayoutParams1.isDecor)) { localView1.measure(View.MeasureSpec.makeMeasureSpec((int)(j * localLayoutParams1.widthFactor), 1073741824), this.mChildHeightMeasureSpec); } } } } protected void onPageScrolled(int paramInt1, float paramFloat, int paramInt2) { if (this.mDecorChildCount > 0) { int m = getScrollX(); int n = getPaddingLeft(); int i1 = getPaddingRight(); int i2 = getWidth(); int i3 = getChildCount(); int i4 = 0; while (i4 < i3) { View localView2 = getChildAt(i4); LayoutParams localLayoutParams = (LayoutParams)localView2.getLayoutParams(); if (!localLayoutParams.isDecor) { i4++; } else { int i5; switch (0x7 & localLayoutParams.gravity) { case 2: case 4: default: i5 = n; } for (;;) { int i6 = i5 + m - localView2.getLeft(); if (i6 == 0) { break; } localView2.offsetLeftAndRight(i6); break; i5 = n; n += localView2.getWidth(); continue; i5 = Math.max((i2 - localView2.getMeasuredWidth()) / 2, n); continue; i5 = i2 - i1 - localView2.getMeasuredWidth(); i1 += localView2.getMeasuredWidth(); } } } } if ((this.mSeenPositionMin < 0) || (paramInt1 < this.mSeenPositionMin)) { this.mSeenPositionMin = paramInt1; } if ((this.mSeenPositionMax < 0) || (FloatMath.ceil(paramFloat + paramInt1) > this.mSeenPositionMax)) { this.mSeenPositionMax = (paramInt1 + 1); } if (this.mOnPageChangeListener != null) { this.mOnPageChangeListener.onPageScrolled(paramInt1, paramFloat, paramInt2); } if (this.mInternalPageChangeListener != null) { this.mInternalPageChangeListener.onPageScrolled(paramInt1, paramFloat, paramInt2); } if (this.mPageTransformer != null) { int i = getScrollX(); int j = getChildCount(); int k = 0; if (k < j) { View localView1 = getChildAt(k); if (((LayoutParams)localView1.getLayoutParams()).isDecor) {} for (;;) { k++; break; float f = (localView1.getLeft() - i) / getWidth(); this.mPageTransformer.transformPage(localView1, f); } } } this.mCalledSuper = true; } protected boolean onRequestFocusInDescendants(int paramInt, Rect paramRect) { int i = getChildCount(); int j; int k; int m; int n; if ((paramInt & 0x2) != 0) { j = 0; k = 1; m = i; n = j; label24: if (n == m) { break label114; } View localView = getChildAt(n); if (localView.getVisibility() != 0) { break label104; } ItemInfo localItemInfo = infoForChild(localView); if ((localItemInfo == null) || (localItemInfo.position != this.mCurItem) || (!localView.requestFocus(paramInt, paramRect))) { break label104; } } label104: label114: for (boolean bool = true;; bool = false) { return bool; j = i - 1; k = -1; m = -1; break; n += k; break label24; } } public void onRestoreInstanceState(Parcelable paramParcelable) { if (!(paramParcelable instanceof SavedState)) { super.onRestoreInstanceState(paramParcelable); } for (;;) { return; SavedState localSavedState = (SavedState)paramParcelable; super.onRestoreInstanceState(localSavedState.getSuperState()); if (this.mAdapter != null) { this.mAdapter.restoreState(localSavedState.adapterState, localSavedState.loader); setCurrentItemInternal(localSavedState.position, false, true); } else { this.mRestoredCurItem = localSavedState.position; this.mRestoredAdapterState = localSavedState.adapterState; this.mRestoredClassLoader = localSavedState.loader; } } } public Parcelable onSaveInstanceState() { SavedState localSavedState = new SavedState(super.onSaveInstanceState()); localSavedState.position = this.mCurItem; if (this.mAdapter != null) { localSavedState.adapterState = this.mAdapter.saveState(); } return localSavedState; } protected void onSizeChanged(int paramInt1, int paramInt2, int paramInt3, int paramInt4) { super.onSizeChanged(paramInt1, paramInt2, paramInt3, paramInt4); if (paramInt1 != paramInt3) { recomputeScrollPosition(paramInt1, paramInt3, this.mPageMargin, this.mPageMargin); } } public boolean onTouchEvent(MotionEvent paramMotionEvent) { boolean bool1; if (this.mFakeDragging) { bool1 = true; } for (;;) { return bool1; if ((paramMotionEvent.getAction() == 0) && (paramMotionEvent.getEdgeFlags() != 0)) { bool1 = false; } else { if ((this.mAdapter != null) && (this.mAdapter.getCount() != 0)) { break; } bool1 = false; } } if (this.mVelocityTracker == null) { this.mVelocityTracker = VelocityTracker.obtain(); } this.mVelocityTracker.addMovement(paramMotionEvent); int i = paramMotionEvent.getAction(); boolean bool2 = false; switch (i & 0xFF) { } for (;;) { if (bool2) { ViewCompat.postInvalidateOnAnimation(this); } bool1 = true; break; this.mScroller.abortAnimation(); this.mPopulatePending = false; populate(); this.mIsBeingDragged = true; setScrollState(1); float f5 = paramMotionEvent.getX(); this.mInitialMotionX = f5; this.mLastMotionX = f5; this.mActivePointerId = MotionEventCompat.getPointerId(paramMotionEvent, 0); continue; if (!this.mIsBeingDragged) { int i1 = MotionEventCompat.findPointerIndex(paramMotionEvent, this.mActivePointerId); float f1 = MotionEventCompat.getX(paramMotionEvent, i1); float f2 = Math.abs(f1 - this.mLastMotionX); float f3 = Math.abs(MotionEventCompat.getY(paramMotionEvent, i1) - this.mLastMotionY); if ((f2 > this.mTouchSlop) && (f2 > f3)) { this.mIsBeingDragged = true; if (f1 - this.mInitialMotionX <= 0.0F) { break label345; } } } label345: for (float f4 = this.mInitialMotionX + this.mTouchSlop;; f4 = this.mInitialMotionX - this.mTouchSlop) { this.mLastMotionX = f4; setScrollState(1); setScrollingCacheEnabled(true); if (!this.mIsBeingDragged) { break; } bool2 = false | performDrag(MotionEventCompat.getX(paramMotionEvent, MotionEventCompat.findPointerIndex(paramMotionEvent, this.mActivePointerId))); break; } if (this.mIsBeingDragged) { VelocityTracker localVelocityTracker = this.mVelocityTracker; localVelocityTracker.computeCurrentVelocity(1000, this.mMaximumVelocity); int k = (int)VelocityTrackerCompat.getXVelocity(localVelocityTracker, this.mActivePointerId); this.mPopulatePending = true; int m = getWidth(); int n = getScrollX(); ItemInfo localItemInfo = infoForCurrentScrollPosition(); setCurrentItemInternal(determineTargetPage(localItemInfo.position, (n / m - localItemInfo.offset) / localItemInfo.widthFactor, k, (int)(MotionEventCompat.getX(paramMotionEvent, MotionEventCompat.findPointerIndex(paramMotionEvent, this.mActivePointerId)) - this.mInitialMotionX)), true, true, k); this.mActivePointerId = -1; endDrag(); bool2 = this.mLeftEdge.onRelease() | this.mRightEdge.onRelease(); continue; if (this.mIsBeingDragged) { scrollToItem(this.mCurItem, true, 0, false); this.mActivePointerId = -1; endDrag(); bool2 = this.mLeftEdge.onRelease() | this.mRightEdge.onRelease(); continue; int j = MotionEventCompat.getActionIndex(paramMotionEvent); this.mLastMotionX = MotionEventCompat.getX(paramMotionEvent, j); this.mActivePointerId = MotionEventCompat.getPointerId(paramMotionEvent, j); continue; onSecondaryPointerUp(paramMotionEvent); this.mLastMotionX = MotionEventCompat.getX(paramMotionEvent, MotionEventCompat.findPointerIndex(paramMotionEvent, this.mActivePointerId)); } } } } boolean pageLeft() { boolean bool = true; if (this.mCurItem > 0) { setCurrentItem(-1 + this.mCurItem, bool); } for (;;) { return bool; bool = false; } } boolean pageRight() { boolean bool = true; if ((this.mAdapter != null) && (this.mCurItem < -1 + this.mAdapter.getCount())) { setCurrentItem(1 + this.mCurItem, bool); } for (;;) { return bool; bool = false; } } void populate() { populate(this.mCurItem); } void populate(int paramInt) { ItemInfo localItemInfo1 = null; if (this.mCurItem != paramInt) { localItemInfo1 = infoForPosition(this.mCurItem); this.mCurItem = paramInt; } if (this.mAdapter == null) { break label31; } label31: label210: label983: label1115: for (;;) { return; if ((!this.mPopulatePending) && (getWindowToken() != null)) { this.mAdapter.startUpdate(this); int i = this.mOffscreenPageLimit; int j = Math.max(0, this.mCurItem - i); int k = this.mAdapter.getCount(); int m = Math.min(k - 1, i + this.mCurItem); Object localObject1 = null; int n = 0; if (n < this.mItems.size()) { ItemInfo localItemInfo8 = (ItemInfo)this.mItems.get(n); if (localItemInfo8.position < this.mCurItem) { break label530; } if (localItemInfo8.position == this.mCurItem) { localObject1 = localItemInfo8; } } if ((localObject1 == null) && (k > 0)) { localObject1 = addNewItem(this.mCurItem, n); } float f1; int i6; ItemInfo localItemInfo5; int i7; float f3; int i8; ItemInfo localItemInfo6; int i9; Object localObject2; label366: int i2; if (localObject1 != null) { f1 = 0.0F; i6 = n - 1; if (i6 >= 0) { localItemInfo5 = (ItemInfo)this.mItems.get(i6); float f2 = 2.0F - ((ItemInfo)localObject1).widthFactor; i7 = -1 + this.mCurItem; if (i7 >= 0) { if ((f1 < f2) || (i7 >= j)) { break label634; } if (localItemInfo5 != null) { break label542; } } f3 = ((ItemInfo)localObject1).widthFactor; i8 = n + 1; if (f3 < 2.0F) { if (i8 >= this.mItems.size()) { break label747; } localItemInfo6 = (ItemInfo)this.mItems.get(i8); i9 = 1 + this.mCurItem; if (i9 < k) { if ((f3 < 2.0F) || (i9 <= m)) { break label846; } if (localItemInfo6 != null) { break label753; } } } calculatePageOffsets((ItemInfo)localObject1, n, localItemInfo1); } } else { PagerAdapter localPagerAdapter1 = this.mAdapter; int i1 = this.mCurItem; if (localObject1 == null) { break label971; } localObject2 = ((ItemInfo)localObject1).object; localPagerAdapter1.setPrimaryItem(this, i1, localObject2); this.mAdapter.finishUpdate(this); if (this.mDrawingOrder == 0) { break label977; } i2 = 1; if (i2 != 0) { if (this.mDrawingOrderedChildren != null) { break label983; } this.mDrawingOrderedChildren = new ArrayList(); } } for (;;) { int i3 = getChildCount(); for (int i4 = 0; i4 < i3; i4++) { View localView3 = getChildAt(i4); LayoutParams localLayoutParams = (LayoutParams)localView3.getLayoutParams(); localLayoutParams.childIndex = i4; if ((!localLayoutParams.isDecor) && (localLayoutParams.widthFactor == 0.0F)) { ItemInfo localItemInfo4 = infoForChild(localView3); if (localItemInfo4 != null) { localLayoutParams.widthFactor = localItemInfo4.widthFactor; localLayoutParams.position = localItemInfo4.position; } } if (i2 != 0) { this.mDrawingOrderedChildren.add(localView3); } } n++; break; localItemInfo5 = null; break label210; int i14 = localItemInfo5.position; if ((i7 == i14) && (!localItemInfo5.scrolling)) { this.mItems.remove(i6); PagerAdapter localPagerAdapter3 = this.mAdapter; Object localObject4 = localItemInfo5.object; localPagerAdapter3.destroyItem(this, i7, localObject4); i6--; n--; if (i6 < 0) { break label628; } } label628: for (localItemInfo5 = (ItemInfo)this.mItems.get(i6);; localItemInfo5 = null) { i7--; break; } label634: if (localItemInfo5 != null) { int i13 = localItemInfo5.position; if (i7 == i13) { f1 += localItemInfo5.widthFactor; i6--; if (i6 >= 0) {} for (localItemInfo5 = (ItemInfo)this.mItems.get(i6);; localItemInfo5 = null) { break; } } } int i12 = i6 + 1; f1 += addNewItem(i7, i12).widthFactor; n++; if (i6 >= 0) {} for (localItemInfo5 = (ItemInfo)this.mItems.get(i6);; localItemInfo5 = null) { break; } label747: localItemInfo6 = null; break label299; label753: int i11 = localItemInfo6.position; if ((i9 == i11) && (!localItemInfo6.scrolling)) { this.mItems.remove(i8); PagerAdapter localPagerAdapter2 = this.mAdapter; Object localObject3 = localItemInfo6.object; localPagerAdapter2.destroyItem(this, i9, localObject3); if (i8 >= this.mItems.size()) { break label840; } } for (localItemInfo6 = (ItemInfo)this.mItems.get(i8);; localItemInfo6 = null) { i9++; break; } if (localItemInfo6 != null) { int i10 = localItemInfo6.position; if (i9 == i10) { f3 += localItemInfo6.widthFactor; i8++; if (i8 < this.mItems.size()) {} for (localItemInfo6 = (ItemInfo)this.mItems.get(i8);; localItemInfo6 = null) { break; } } } ItemInfo localItemInfo7 = addNewItem(i9, i8); i8++; f3 += localItemInfo7.widthFactor; if (i8 < this.mItems.size()) {} for (localItemInfo6 = (ItemInfo)this.mItems.get(i8);; localItemInfo6 = null) { break; } localObject2 = null; break label366; i2 = 0; break label394; this.mDrawingOrderedChildren.clear(); } if (i2 != 0) { Collections.sort(this.mDrawingOrderedChildren, sPositionComparator); } if (!hasFocus()) { break; } View localView1 = findFocus(); if (localView1 != null) {} for (ItemInfo localItemInfo2 = infoForAnyChild(localView1);; localItemInfo2 = null) { if ((localItemInfo2 != null) && (localItemInfo2.position == this.mCurItem)) { break label1115; } for (int i5 = 0;; i5++) { if (i5 >= getChildCount()) { break label1109; } View localView2 = getChildAt(i5); ItemInfo localItemInfo3 = infoForChild(localView2); if ((localItemInfo3 != null) && (localItemInfo3.position == this.mCurItem) && (localView2.requestFocus(2))) { break; } } break label31; } } } } public void setAdapter(PagerAdapter paramPagerAdapter) { if (this.mAdapter != null) { this.mAdapter.unregisterDataSetObserver(this.mObserver); this.mAdapter.startUpdate(this); for (int i = 0; i < this.mItems.size(); i++) { ItemInfo localItemInfo = (ItemInfo)this.mItems.get(i); this.mAdapter.destroyItem(this, localItemInfo.position, localItemInfo.object); } this.mAdapter.finishUpdate(this); this.mItems.clear(); removeNonDecorViews(); this.mCurItem = 0; scrollTo(0, 0); } PagerAdapter localPagerAdapter = this.mAdapter; this.mAdapter = paramPagerAdapter; if (this.mAdapter != null) { if (this.mObserver == null) { this.mObserver = new PagerObserver(null); } this.mAdapter.registerDataSetObserver(this.mObserver); this.mPopulatePending = false; this.mFirstLayout = true; if (this.mRestoredCurItem < 0) { break label236; } this.mAdapter.restoreState(this.mRestoredAdapterState, this.mRestoredClassLoader); setCurrentItemInternal(this.mRestoredCurItem, false, true); this.mRestoredCurItem = -1; this.mRestoredAdapterState = null; this.mRestoredClassLoader = null; } for (;;) { if ((this.mAdapterChangeListener != null) && (localPagerAdapter != paramPagerAdapter)) { this.mAdapterChangeListener.onAdapterChanged(localPagerAdapter, paramPagerAdapter); } return; label236: populate(); } } void setChildrenDrawingOrderEnabledCompat(boolean paramBoolean) { if (this.mSetChildrenDrawingOrderEnabled == null) {} try { Class[] arrayOfClass = new Class[1]; arrayOfClass[0] = Boolean.TYPE; this.mSetChildrenDrawingOrderEnabled = ViewGroup.class.getDeclaredMethod("setChildrenDrawingOrderEnabled", arrayOfClass); } catch (NoSuchMethodException localNoSuchMethodException) { try { for (;;) { Method localMethod = this.mSetChildrenDrawingOrderEnabled; Object[] arrayOfObject = new Object[1]; arrayOfObject[0] = Boolean.valueOf(paramBoolean); localMethod.invoke(this, arrayOfObject); return; localNoSuchMethodException = localNoSuchMethodException; Log.e("ViewPager", "Can't find setChildrenDrawingOrderEnabled", localNoSuchMethodException); } } catch (Exception localException) { for (;;) { Log.e("ViewPager", "Error changing children drawing order", localException); } } } } public void setCurrentItem(int paramInt) { this.mPopulatePending = false; if (!this.mFirstLayout) {} for (boolean bool = true;; bool = false) { setCurrentItemInternal(paramInt, bool, false); return; } } public void setCurrentItem(int paramInt, boolean paramBoolean) { this.mPopulatePending = false; setCurrentItemInternal(paramInt, paramBoolean, false); } void setCurrentItemInternal(int paramInt, boolean paramBoolean1, boolean paramBoolean2) { setCurrentItemInternal(paramInt, paramBoolean1, paramBoolean2, 0); } void setCurrentItemInternal(int paramInt1, boolean paramBoolean1, boolean paramBoolean2, int paramInt2) { boolean bool = true; if ((this.mAdapter == null) || (this.mAdapter.getCount() <= 0)) { setScrollingCacheEnabled(false); } for (;;) { return; if ((paramBoolean2) || (this.mCurItem != paramInt1) || (this.mItems.size() == 0)) { break; } setScrollingCacheEnabled(false); } if (paramInt1 < 0) { paramInt1 = 0; } for (;;) { int i = this.mOffscreenPageLimit; if ((paramInt1 <= i + this.mCurItem) && (paramInt1 >= this.mCurItem - i)) { break; } for (int j = 0; j < this.mItems.size(); j++) { ((ItemInfo)this.mItems.get(j)).scrolling = bool; } if (paramInt1 >= this.mAdapter.getCount()) { paramInt1 = -1 + this.mAdapter.getCount(); } } if (this.mCurItem != paramInt1) {} for (;;) { populate(paramInt1); scrollToItem(paramInt1, paramBoolean1, paramInt2, bool); break; bool = false; } } OnPageChangeListener setInternalPageChangeListener(OnPageChangeListener paramOnPageChangeListener) { OnPageChangeListener localOnPageChangeListener = this.mInternalPageChangeListener; this.mInternalPageChangeListener = paramOnPageChangeListener; return localOnPageChangeListener; } public void setOffscreenPageLimit(int paramInt) { if (paramInt < 1) { Log.w("ViewPager", "Requested offscreen page limit " + paramInt + " too small; defaulting to " + 1); paramInt = 1; } if (paramInt != this.mOffscreenPageLimit) { this.mOffscreenPageLimit = paramInt; populate(); } } void setOnAdapterChangeListener(OnAdapterChangeListener paramOnAdapterChangeListener) { this.mAdapterChangeListener = paramOnAdapterChangeListener; } public void setOnPageChangeListener(OnPageChangeListener paramOnPageChangeListener) { this.mOnPageChangeListener = paramOnPageChangeListener; } public void setPageMargin(int paramInt) { int i = this.mPageMargin; this.mPageMargin = paramInt; int j = getWidth(); recomputeScrollPosition(j, j, paramInt, i); requestLayout(); } public void setPageMarginDrawable(int paramInt) { setPageMarginDrawable(getContext().getResources().getDrawable(paramInt)); } public void setPageMarginDrawable(Drawable paramDrawable) { this.mMarginDrawable = paramDrawable; if (paramDrawable != null) { refreshDrawableState(); } if (paramDrawable == null) {} for (boolean bool = true;; bool = false) { setWillNotDraw(bool); invalidate(); return; } } public void setPageTransformer(boolean paramBoolean, PageTransformer paramPageTransformer) { int i = 1; label27: int i1; if (Build.VERSION.SDK_INT >= 11) { if (paramPageTransformer == null) { break label74; } int j = i; if (this.mPageTransformer == null) { break label80; } int m = i; if (j == m) { break label86; } i1 = i; label37: this.mPageTransformer = paramPageTransformer; setChildrenDrawingOrderEnabledCompat(j); if (j == 0) { break label92; } if (paramBoolean) { i = 2; } } label74: label80: label86: label92: for (this.mDrawingOrder = i;; this.mDrawingOrder = 0) { if (i1 != 0) { populate(); } return; int k = 0; break; int n = 0; break label27; i1 = 0; break label37; } } void smoothScrollTo(int paramInt1, int paramInt2) { smoothScrollTo(paramInt1, paramInt2, 0); } void smoothScrollTo(int paramInt1, int paramInt2, int paramInt3) { if (getChildCount() == 0) { setScrollingCacheEnabled(false); } int i; int j; int k; int m; for (;;) { return; i = getScrollX(); j = getScrollY(); k = paramInt1 - i; m = paramInt2 - j; if ((k != 0) || (m != 0)) { break; } completeScroll(false); populate(); setScrollState(0); } setScrollingCacheEnabled(true); setScrollState(2); int n = getWidth(); int i1 = n / 2; float f1 = Math.min(1.0F, 1.0F * Math.abs(k) / n); float f2 = i1 + i1 * distanceInfluenceForSnapDuration(f1); int i2 = Math.abs(paramInt3); if (i2 > 0) {} float f3; for (int i3 = 4 * Math.round(1000.0F * Math.abs(f2 / i2));; i3 = (int)(100.0F * (1.0F + Math.abs(k) / (f3 + this.mPageMargin)))) { int i4 = Math.min(i3, 600); this.mScroller.startScroll(i, j, k, m, i4); ViewCompat.postInvalidateOnAnimation(this); break; f3 = n * this.mAdapter.getPageWidth(this.mCurItem); } } protected boolean verifyDrawable(Drawable paramDrawable) { if ((super.verifyDrawable(paramDrawable)) || (paramDrawable == this.mMarginDrawable)) {} for (boolean bool = true;; bool = false) { return bool; } } static class ViewPositionComparator implements Comparator<View> { public int compare(View paramView1, View paramView2) { ViewPager.LayoutParams localLayoutParams1 = (ViewPager.LayoutParams)paramView1.getLayoutParams(); ViewPager.LayoutParams localLayoutParams2 = (ViewPager.LayoutParams)paramView2.getLayoutParams(); int i; if (localLayoutParams1.isDecor != localLayoutParams2.isDecor) { if (localLayoutParams1.isDecor) { i = 1; } } for (;;) { return i; i = -1; continue; i = localLayoutParams1.position - localLayoutParams2.position; } } } public static class LayoutParams extends ViewGroup.LayoutParams { int childIndex; public int gravity; public boolean isDecor; boolean needsMeasure; int position; float widthFactor = 0.0F; public LayoutParams() { super(-1); } public LayoutParams(Context paramContext, AttributeSet paramAttributeSet) { super(paramAttributeSet); TypedArray localTypedArray = paramContext.obtainStyledAttributes(paramAttributeSet, ViewPager.LAYOUT_ATTRS); this.gravity = localTypedArray.getInteger(0, 48); localTypedArray.recycle(); } } private class PagerObserver extends DataSetObserver { private PagerObserver() {} public void onChanged() { ViewPager.this.dataSetChanged(); } public void onInvalidated() { ViewPager.this.dataSetChanged(); } } class MyAccessibilityDelegate extends AccessibilityDelegateCompat { MyAccessibilityDelegate() {} public void onInitializeAccessibilityEvent(View paramView, AccessibilityEvent paramAccessibilityEvent) { super.onInitializeAccessibilityEvent(paramView, paramAccessibilityEvent); paramAccessibilityEvent.setClassName(ViewPager.class.getName()); } public void onInitializeAccessibilityNodeInfo(View paramView, AccessibilityNodeInfoCompat paramAccessibilityNodeInfoCompat) { int i = 1; super.onInitializeAccessibilityNodeInfo(paramView, paramAccessibilityNodeInfoCompat); paramAccessibilityNodeInfoCompat.setClassName(ViewPager.class.getName()); if ((ViewPager.this.mAdapter != null) && (ViewPager.this.mAdapter.getCount() > i)) {} for (;;) { paramAccessibilityNodeInfoCompat.setScrollable(i); if ((ViewPager.this.mAdapter != null) && (ViewPager.this.mCurItem >= 0) && (ViewPager.this.mCurItem < -1 + ViewPager.this.mAdapter.getCount())) { paramAccessibilityNodeInfoCompat.addAction(4096); } if ((ViewPager.this.mAdapter != null) && (ViewPager.this.mCurItem > 0) && (ViewPager.this.mCurItem < ViewPager.this.mAdapter.getCount())) { paramAccessibilityNodeInfoCompat.addAction(8192); } return; int j = 0; } } public boolean performAccessibilityAction(View paramView, int paramInt, Bundle paramBundle) { boolean bool = true; if (super.performAccessibilityAction(paramView, paramInt, paramBundle)) {} for (;;) { return bool; switch (paramInt) { default: bool = false; break; case 4096: if ((ViewPager.this.mAdapter != null) && (ViewPager.this.mCurItem >= 0) && (ViewPager.this.mCurItem < -1 + ViewPager.this.mAdapter.getCount())) { ViewPager.this.setCurrentItem(1 + ViewPager.this.mCurItem); } else { bool = false; } break; case 8192: if ((ViewPager.this.mAdapter != null) && (ViewPager.this.mCurItem > 0) && (ViewPager.this.mCurItem < ViewPager.this.mAdapter.getCount())) { ViewPager.this.setCurrentItem(-1 + ViewPager.this.mCurItem); } else { bool = false; } break; } } } } public static class SavedState extends View.BaseSavedState { public static final Parcelable.Creator<SavedState> CREATOR = ParcelableCompat.newCreator(new ParcelableCompatCreatorCallbacks() { public ViewPager.SavedState createFromParcel(Parcel paramAnonymousParcel, ClassLoader paramAnonymousClassLoader) { return new ViewPager.SavedState(paramAnonymousParcel, paramAnonymousClassLoader); } public ViewPager.SavedState[] newArray(int paramAnonymousInt) { return new ViewPager.SavedState[paramAnonymousInt]; } }); Parcelable adapterState; ClassLoader loader; int position; SavedState(Parcel paramParcel, ClassLoader paramClassLoader) { super(); if (paramClassLoader == null) { paramClassLoader = getClass().getClassLoader(); } this.position = paramParcel.readInt(); this.adapterState = paramParcel.readParcelable(paramClassLoader); this.loader = paramClassLoader; } public SavedState(Parcelable paramParcelable) { super(); } public String toString() { return "FragmentPager.SavedState{" + Integer.toHexString(System.identityHashCode(this)) + " position=" + this.position + "}"; } public void writeToParcel(Parcel paramParcel, int paramInt) { super.writeToParcel(paramParcel, paramInt); paramParcel.writeInt(this.position); paramParcel.writeParcelable(this.adapterState, paramInt); } } static abstract interface Decor {} static abstract interface OnAdapterChangeListener { public abstract void onAdapterChanged(PagerAdapter paramPagerAdapter1, PagerAdapter paramPagerAdapter2); } public static abstract interface PageTransformer { public abstract void transformPage(View paramView, float paramFloat); } public static class SimpleOnPageChangeListener implements ViewPager.OnPageChangeListener { public void onPageScrollStateChanged(int paramInt) {} public void onPageScrolled(int paramInt1, float paramFloat, int paramInt2) {} public void onPageSelected(int paramInt) {} } public static abstract interface OnPageChangeListener { public abstract void onPageScrollStateChanged(int paramInt); public abstract void onPageScrolled(int paramInt1, float paramFloat, int paramInt2); public abstract void onPageSelected(int paramInt); } static class ItemInfo { Object object; float offset; int position; boolean scrolling; float widthFactor; } } /* Location: F:\neembuu\Research\android_apps\output_jar.jar * Qualified Name: android.support.v4.view.ViewPager * JD-Core Version: 0.7.0.1 */