package android.support.v4.view; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.drawable.Drawable; import android.os.Build.VERSION; import android.text.TextUtils.TruncateAt; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.view.View.MeasureSpec; import android.view.ViewGroup; import android.view.ViewParent; import android.widget.TextView; import java.lang.ref.WeakReference; public class PagerTitleStrip extends ViewGroup implements ViewPager.Decor { private static final int[] ATTRS; private static final PagerTitleStripImpl IMPL; private static final float SIDE_ALPHA = 0.6F; private static final String TAG = "PagerTitleStrip"; private static final int[] TEXT_ATTRS; private static final int TEXT_SPACING = 16; TextView mCurrText; private int mGravity; private int mLastKnownCurrentPage = -1; private float mLastKnownPositionOffset = -1.0F; TextView mNextText; private int mNonPrimaryAlpha; private final PageListener mPageListener = new PageListener(null); ViewPager mPager; TextView mPrevText; private int mScaledTextSpacing; int mTextColor; private boolean mUpdatingPositions; private boolean mUpdatingText; private WeakReference<PagerAdapter> mWatchingAdapter; static { int[] arrayOfInt1 = new int[4]; arrayOfInt1[0] = 16842804; arrayOfInt1[1] = 16842901; arrayOfInt1[2] = 16842904; arrayOfInt1[3] = 16842927; ATTRS = arrayOfInt1; int[] arrayOfInt2 = new int[1]; arrayOfInt2[0] = 16843660; TEXT_ATTRS = arrayOfInt2; if (Build.VERSION.SDK_INT >= 14) {} for (IMPL = new PagerTitleStripImplIcs();; IMPL = new PagerTitleStripImplBase()) { return; } } public PagerTitleStrip(Context paramContext) { this(paramContext, null); } public PagerTitleStrip(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); TextView localTextView1 = new TextView(paramContext); this.mPrevText = localTextView1; addView(localTextView1); TextView localTextView2 = new TextView(paramContext); this.mCurrText = localTextView2; addView(localTextView2); TextView localTextView3 = new TextView(paramContext); this.mNextText = localTextView3; addView(localTextView3); TypedArray localTypedArray1 = paramContext.obtainStyledAttributes(paramAttributeSet, ATTRS); int i = localTypedArray1.getResourceId(0, 0); if (i != 0) { this.mPrevText.setTextAppearance(paramContext, i); this.mCurrText.setTextAppearance(paramContext, i); this.mNextText.setTextAppearance(paramContext, i); } int j = localTypedArray1.getDimensionPixelSize(1, 0); if (j != 0) { setTextSize(0, j); } if (localTypedArray1.hasValue(2)) { int k = localTypedArray1.getColor(2, 0); this.mPrevText.setTextColor(k); this.mCurrText.setTextColor(k); this.mNextText.setTextColor(k); } this.mGravity = localTypedArray1.getInteger(3, 80); localTypedArray1.recycle(); this.mTextColor = this.mCurrText.getTextColors().getDefaultColor(); setNonPrimaryAlpha(0.6F); this.mPrevText.setEllipsize(TextUtils.TruncateAt.END); this.mCurrText.setEllipsize(TextUtils.TruncateAt.END); this.mNextText.setEllipsize(TextUtils.TruncateAt.END); boolean bool = false; if (i != 0) { TypedArray localTypedArray2 = paramContext.obtainStyledAttributes(i, TEXT_ATTRS); bool = localTypedArray2.getBoolean(0, false); localTypedArray2.recycle(); } if (bool) { setSingleLineAllCaps(this.mPrevText); setSingleLineAllCaps(this.mCurrText); setSingleLineAllCaps(this.mNextText); } for (;;) { this.mScaledTextSpacing = ((int)(16.0F * paramContext.getResources().getDisplayMetrics().density)); return; this.mPrevText.setSingleLine(); this.mCurrText.setSingleLine(); this.mNextText.setSingleLine(); } } private static void setSingleLineAllCaps(TextView paramTextView) { IMPL.setSingleLineAllCaps(paramTextView); } int getMinHeight() { int i = 0; Drawable localDrawable = getBackground(); if (localDrawable != null) { i = localDrawable.getIntrinsicHeight(); } return i; } public int getTextSpacing() { return this.mScaledTextSpacing; } protected void onAttachedToWindow() { super.onAttachedToWindow(); ViewParent localViewParent = getParent(); if (!(localViewParent instanceof ViewPager)) { throw new IllegalStateException("PagerTitleStrip must be a direct child of a ViewPager."); } ViewPager localViewPager = (ViewPager)localViewParent; PagerAdapter localPagerAdapter1 = localViewPager.getAdapter(); localViewPager.setInternalPageChangeListener(this.mPageListener); localViewPager.setOnAdapterChangeListener(this.mPageListener); this.mPager = localViewPager; if (this.mWatchingAdapter != null) {} for (PagerAdapter localPagerAdapter2 = (PagerAdapter)this.mWatchingAdapter.get();; localPagerAdapter2 = null) { updateAdapter(localPagerAdapter2, localPagerAdapter1); return; } } protected void onDetachedFromWindow() { super.onDetachedFromWindow(); if (this.mPager != null) { updateAdapter(this.mPager.getAdapter(), null); this.mPager.setInternalPageChangeListener(null); this.mPager.setOnAdapterChangeListener(null); this.mPager = null; } } protected void onLayout(boolean paramBoolean, int paramInt1, int paramInt2, int paramInt3, int paramInt4) { float f = 0.0F; if (this.mPager != null) { if (this.mLastKnownPositionOffset >= 0.0F) { f = this.mLastKnownPositionOffset; } updateTextPositions(this.mLastKnownCurrentPage, f, true); } } protected void onMeasure(int paramInt1, int paramInt2) { int i = View.MeasureSpec.getMode(paramInt1); int j = View.MeasureSpec.getMode(paramInt2); int k = View.MeasureSpec.getSize(paramInt1); int m = View.MeasureSpec.getSize(paramInt2); if (i != 1073741824) { throw new IllegalStateException("Must measure with an exact width"); } int n = getMinHeight(); int i1 = getPaddingTop() + getPaddingBottom(); int i2 = m - i1; int i3 = View.MeasureSpec.makeMeasureSpec((int)(0.8F * k), -2147483648); int i4 = View.MeasureSpec.makeMeasureSpec(i2, -2147483648); this.mPrevText.measure(i3, i4); this.mCurrText.measure(i3, i4); this.mNextText.measure(i3, i4); if (j == 1073741824) { setMeasuredDimension(k, m); } for (;;) { return; setMeasuredDimension(k, Math.max(n, i1 + this.mCurrText.getMeasuredHeight())); } } public void requestLayout() { if (!this.mUpdatingText) { super.requestLayout(); } } public void setGravity(int paramInt) { this.mGravity = paramInt; requestLayout(); } public void setNonPrimaryAlpha(float paramFloat) { this.mNonPrimaryAlpha = (0xFF & (int)(255.0F * paramFloat)); int i = this.mNonPrimaryAlpha << 24 | 0xFFFFFF & this.mTextColor; this.mPrevText.setTextColor(i); this.mNextText.setTextColor(i); } public void setTextColor(int paramInt) { this.mTextColor = paramInt; this.mCurrText.setTextColor(paramInt); int i = this.mNonPrimaryAlpha << 24 | 0xFFFFFF & this.mTextColor; this.mPrevText.setTextColor(i); this.mNextText.setTextColor(i); } public void setTextSize(int paramInt, float paramFloat) { this.mPrevText.setTextSize(paramInt, paramFloat); this.mCurrText.setTextSize(paramInt, paramFloat); this.mNextText.setTextSize(paramInt, paramFloat); } public void setTextSpacing(int paramInt) { this.mScaledTextSpacing = paramInt; requestLayout(); } void updateAdapter(PagerAdapter paramPagerAdapter1, PagerAdapter paramPagerAdapter2) { if (paramPagerAdapter1 != null) { paramPagerAdapter1.unregisterDataSetObserver(this.mPageListener); this.mWatchingAdapter = null; } if (paramPagerAdapter2 != null) { paramPagerAdapter2.registerDataSetObserver(this.mPageListener); this.mWatchingAdapter = new WeakReference(paramPagerAdapter2); } if (this.mPager != null) { this.mLastKnownCurrentPage = -1; this.mLastKnownPositionOffset = -1.0F; updateText(this.mPager.getCurrentItem(), paramPagerAdapter2); requestLayout(); } } void updateText(int paramInt, PagerAdapter paramPagerAdapter) { int i; TextView localTextView; if (paramPagerAdapter != null) { i = paramPagerAdapter.getCount(); this.mUpdatingText = true; CharSequence localCharSequence1 = null; if ((paramInt >= 1) && (paramPagerAdapter != null)) { localCharSequence1 = paramPagerAdapter.getPageTitle(paramInt - 1); } this.mPrevText.setText(localCharSequence1); localTextView = this.mCurrText; if ((paramPagerAdapter == null) || (paramInt >= i)) { break label229; } } label229: for (CharSequence localCharSequence2 = paramPagerAdapter.getPageTitle(paramInt);; localCharSequence2 = null) { localTextView.setText(localCharSequence2); CharSequence localCharSequence3 = null; if ((paramInt + 1 < i) && (paramPagerAdapter != null)) { localCharSequence3 = paramPagerAdapter.getPageTitle(paramInt + 1); } this.mNextText.setText(localCharSequence3); int j = getWidth() - getPaddingLeft() - getPaddingRight(); int k = getHeight() - getPaddingTop() - getPaddingBottom(); int m = View.MeasureSpec.makeMeasureSpec((int)(0.8F * j), -2147483648); int n = View.MeasureSpec.makeMeasureSpec(k, -2147483648); this.mPrevText.measure(m, n); this.mCurrText.measure(m, n); this.mNextText.measure(m, n); this.mLastKnownCurrentPage = paramInt; if (!this.mUpdatingPositions) { updateTextPositions(paramInt, this.mLastKnownPositionOffset, false); } this.mUpdatingText = false; return; i = 0; break; } } void updateTextPositions(int paramInt, float paramFloat, boolean paramBoolean) { int i; int k; int n; int i1; int i2; int i3; int i4; int i5; int i9; int i10; int i15; int i16; int i17; int i21; int i23; int i24; int i25; if (paramInt != this.mLastKnownCurrentPage) { updateText(paramInt, this.mPager.getAdapter()); this.mUpdatingPositions = true; i = this.mPrevText.getMeasuredWidth(); int j = this.mCurrText.getMeasuredWidth(); k = this.mNextText.getMeasuredWidth(); int m = j / 2; n = getWidth(); i1 = getHeight(); i2 = getPaddingLeft(); i3 = getPaddingRight(); i4 = getPaddingTop(); i5 = getPaddingBottom(); int i6 = i2 + m; int i7 = i3 + m; int i8 = n - i6 - i7; float f = paramFloat + 0.5F; if (f > 1.0F) { f -= 1.0F; } i9 = n - i7 - (int)(f * i8) - j / 2; i10 = i9 + j; int i11 = this.mPrevText.getBaseline(); int i12 = this.mCurrText.getBaseline(); int i13 = this.mNextText.getBaseline(); int i14 = Math.max(Math.max(i11, i12), i13); i15 = i14 - i11; i16 = i14 - i12; i17 = i14 - i13; int i18 = i15 + this.mPrevText.getMeasuredHeight(); int i19 = i16 + this.mCurrText.getMeasuredHeight(); int i20 = i17 + this.mNextText.getMeasuredHeight(); i21 = Math.max(Math.max(i18, i19), i20); switch (0x70 & this.mGravity) { default: i23 = i4 + i15; i24 = i4 + i16; i25 = i4 + i17; } } for (;;) { TextView localTextView1 = this.mCurrText; int i26 = i24 + this.mCurrText.getMeasuredHeight(); localTextView1.layout(i9, i24, i10, i26); int i27 = Math.min(i2, i9 - this.mScaledTextSpacing - i); TextView localTextView2 = this.mPrevText; int i28 = i27 + i; int i29 = i23 + this.mPrevText.getMeasuredHeight(); localTextView2.layout(i27, i23, i28, i29); int i30 = Math.max(n - i3 - k, i10 + this.mScaledTextSpacing); TextView localTextView3 = this.mNextText; int i31 = i30 + k; int i32 = i25 + this.mNextText.getMeasuredHeight(); localTextView3.layout(i30, i25, i31, i32); this.mLastKnownPositionOffset = paramFloat; this.mUpdatingPositions = false; for (;;) { return; if ((paramBoolean) || (paramFloat != this.mLastKnownPositionOffset)) { break; } } int i33 = (i1 - i4 - i5 - i21) / 2; i23 = i33 + i15; i24 = i33 + i16; i25 = i33 + i17; continue; int i22 = i1 - i5 - i21; i23 = i22 + i15; i24 = i22 + i16; i25 = i22 + i17; } } private class PageListener extends DataSetObserver implements ViewPager.OnPageChangeListener, ViewPager.OnAdapterChangeListener { private int mScrollState; private PageListener() {} public void onAdapterChanged(PagerAdapter paramPagerAdapter1, PagerAdapter paramPagerAdapter2) { PagerTitleStrip.this.updateAdapter(paramPagerAdapter1, paramPagerAdapter2); } public void onChanged() { float f = 0.0F; PagerTitleStrip.this.updateText(PagerTitleStrip.this.mPager.getCurrentItem(), PagerTitleStrip.this.mPager.getAdapter()); if (PagerTitleStrip.this.mLastKnownPositionOffset >= 0.0F) { f = PagerTitleStrip.this.mLastKnownPositionOffset; } PagerTitleStrip.this.updateTextPositions(PagerTitleStrip.this.mPager.getCurrentItem(), f, true); } public void onPageScrollStateChanged(int paramInt) { this.mScrollState = paramInt; } public void onPageScrolled(int paramInt1, float paramFloat, int paramInt2) { if (paramFloat > 0.5F) { paramInt1++; } PagerTitleStrip.this.updateTextPositions(paramInt1, paramFloat, false); } public void onPageSelected(int paramInt) { float f = 0.0F; if (this.mScrollState == 0) { PagerTitleStrip.this.updateText(PagerTitleStrip.this.mPager.getCurrentItem(), PagerTitleStrip.this.mPager.getAdapter()); if (PagerTitleStrip.this.mLastKnownPositionOffset >= 0.0F) { f = PagerTitleStrip.this.mLastKnownPositionOffset; } PagerTitleStrip.this.updateTextPositions(PagerTitleStrip.this.mPager.getCurrentItem(), f, true); } } } static class PagerTitleStripImplIcs implements PagerTitleStrip.PagerTitleStripImpl { public void setSingleLineAllCaps(TextView paramTextView) { PagerTitleStripIcs.setSingleLineAllCaps(paramTextView); } } static class PagerTitleStripImplBase implements PagerTitleStrip.PagerTitleStripImpl { public void setSingleLineAllCaps(TextView paramTextView) { paramTextView.setSingleLine(); } } static abstract interface PagerTitleStripImpl { public abstract void setSingleLineAllCaps(TextView paramTextView); } } /* Location: F:\neembuu\Research\android_apps\output_jar.jar * Qualified Name: android.support.v4.view.PagerTitleStrip * JD-Core Version: 0.7.0.1 */