package androidx.appcompat.widget; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.content.Context; import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.view.ViewPropertyAnimator; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.DecelerateInterpolator; import android.view.animation.Interpolator; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.SpinnerAdapter; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.RestrictTo; import androidx.appcompat.R; import androidx.appcompat.app.ActionBar; import androidx.appcompat.view.ActionBarPolicy; import androidx.appcompat.widget.LinearLayoutCompat; import androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure; @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX}) public class ScrollingTabContainerView extends HorizontalScrollView implements AdapterView.OnItemSelectedListener { private static final int FADE_DURATION = 200; private static final String TAG = "ScrollingTabContainerView"; private static final Interpolator sAlphaInterpolator = new DecelerateInterpolator(); private boolean mAllowCollapse; private int mContentHeight; public int mMaxTabWidth; private int mSelectedTabIndex; public int mStackedTabMaxWidth; private TabClickListener mTabClickListener; public LinearLayoutCompat mTabLayout; public Runnable mTabSelector; private Spinner mTabSpinner; public final VisibilityAnimListener mVisAnimListener = new VisibilityAnimListener(); public ViewPropertyAnimator mVisibilityAnim; /* renamed from: androidx.appcompat.widget.ScrollingTabContainerView$1 reason: invalid class name */ public class AnonymousClass1 implements Runnable { public final /* synthetic */ View val$tabView; public AnonymousClass1(View view) { this.val$tabView = view; } @Override // java.lang.Runnable public void run() { ScrollingTabContainerView.this.smoothScrollTo(this.val$tabView.getLeft() - ((ScrollingTabContainerView.this.getWidth() - this.val$tabView.getWidth()) / 2), 0); ScrollingTabContainerView.this.mTabSelector = null; } } public class TabAdapter extends BaseAdapter { public TabAdapter() { } @Override // android.widget.Adapter public int getCount() { return ScrollingTabContainerView.this.mTabLayout.getChildCount(); } @Override // android.widget.Adapter public Object getItem(int i) { return ((TabView) ScrollingTabContainerView.this.mTabLayout.getChildAt(i)).getTab(); } @Override // android.widget.Adapter public long getItemId(int i) { return (long) i; } @Override // android.widget.Adapter public View getView(int i, View view, ViewGroup viewGroup) { if (view == null) { return ScrollingTabContainerView.this.createTabView((ActionBar.Tab) getItem(i), true); } ((TabView) view).bindTab((ActionBar.Tab) getItem(i)); return view; } } public class TabClickListener implements View.OnClickListener { public TabClickListener() { } @Override // android.view.View.OnClickListener public void onClick(View view) { ((TabView) view).getTab().select(); int childCount = ScrollingTabContainerView.this.mTabLayout.getChildCount(); for (int i = 0; i < childCount; i++) { View childAt = ScrollingTabContainerView.this.mTabLayout.getChildAt(i); childAt.setSelected(childAt == view); } } } public class TabView extends LinearLayout { private static final String ACCESSIBILITY_CLASS_NAME = "androidx.appcompat.app.ActionBar$Tab"; private final int[] BG_ATTRS; private View mCustomView; private ImageView mIconView; private ActionBar.Tab mTab; private TextView mTextView; /* JADX WARNING: Illegal instructions before constructor call */ public TabView(Context context, ActionBar.Tab tab, boolean z2) { super(context, null, r5); int i = R.attr.actionBarTabStyle; int[] iArr = {16842964}; this.BG_ATTRS = iArr; this.mTab = tab; TintTypedArray obtainStyledAttributes = TintTypedArray.obtainStyledAttributes(context, null, iArr, i, 0); if (obtainStyledAttributes.hasValue(0)) { setBackgroundDrawable(obtainStyledAttributes.getDrawable(0)); } obtainStyledAttributes.recycle(); if (z2) { setGravity(8388627); } update(); } public void bindTab(ActionBar.Tab tab) { this.mTab = tab; update(); } public ActionBar.Tab getTab() { return this.mTab; } @Override // android.view.View public void onInitializeAccessibilityEvent(AccessibilityEvent accessibilityEvent) { super.onInitializeAccessibilityEvent(accessibilityEvent); accessibilityEvent.setClassName(ACCESSIBILITY_CLASS_NAME); } @Override // android.view.View public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo accessibilityNodeInfo) { super.onInitializeAccessibilityNodeInfo(accessibilityNodeInfo); accessibilityNodeInfo.setClassName(ACCESSIBILITY_CLASS_NAME); } @Override // android.widget.LinearLayout, android.view.View public void onMeasure(int i, int i2) { int i3; super.onMeasure(i, i2); if (ScrollingTabContainerView.this.mMaxTabWidth > 0 && getMeasuredWidth() > (i3 = ScrollingTabContainerView.this.mMaxTabWidth)) { super.onMeasure(View.MeasureSpec.makeMeasureSpec(i3, BasicMeasure.EXACTLY), i2); } } @Override // android.view.View public void setSelected(boolean z2) { boolean z3 = isSelected() != z2; super.setSelected(z2); if (z3 && z2) { sendAccessibilityEvent(4); } } public void update() { ActionBar.Tab tab = this.mTab; View customView = tab.getCustomView(); CharSequence charSequence = null; if (customView != null) { ViewParent parent = customView.getParent(); if (parent != this) { if (parent != null) { ((ViewGroup) parent).removeView(customView); } addView(customView); } this.mCustomView = customView; TextView textView = this.mTextView; if (textView != null) { textView.setVisibility(8); } ImageView imageView = this.mIconView; if (imageView != null) { imageView.setVisibility(8); this.mIconView.setImageDrawable(null); return; } return; } View view = this.mCustomView; if (view != null) { removeView(view); this.mCustomView = null; } Drawable icon = tab.getIcon(); CharSequence text = tab.getText(); if (icon != null) { if (this.mIconView == null) { AppCompatImageView appCompatImageView = new AppCompatImageView(getContext()); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(-2, -2); layoutParams.gravity = 16; appCompatImageView.setLayoutParams(layoutParams); addView(appCompatImageView, 0); this.mIconView = appCompatImageView; } this.mIconView.setImageDrawable(icon); this.mIconView.setVisibility(0); } else { ImageView imageView2 = this.mIconView; if (imageView2 != null) { imageView2.setVisibility(8); this.mIconView.setImageDrawable(null); } } boolean z2 = !TextUtils.isEmpty(text); if (z2) { if (this.mTextView == null) { AppCompatTextView appCompatTextView = new AppCompatTextView(getContext(), null, R.attr.actionBarTabTextStyle); appCompatTextView.setEllipsize(TextUtils.TruncateAt.END); LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(-2, -2); layoutParams2.gravity = 16; appCompatTextView.setLayoutParams(layoutParams2); addView(appCompatTextView); this.mTextView = appCompatTextView; } this.mTextView.setText(text); this.mTextView.setVisibility(0); } else { TextView textView2 = this.mTextView; if (textView2 != null) { textView2.setVisibility(8); this.mTextView.setText((CharSequence) null); } } ImageView imageView3 = this.mIconView; if (imageView3 != null) { imageView3.setContentDescription(tab.getContentDescription()); } if (!z2) { charSequence = tab.getContentDescription(); } TooltipCompat.setTooltipText(this, charSequence); } } public class VisibilityAnimListener extends AnimatorListenerAdapter { private boolean mCanceled = false; private int mFinalVisibility; public VisibilityAnimListener() { } @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener public void onAnimationCancel(Animator animator) { this.mCanceled = true; } @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener public void onAnimationEnd(Animator animator) { if (!this.mCanceled) { ScrollingTabContainerView scrollingTabContainerView = ScrollingTabContainerView.this; scrollingTabContainerView.mVisibilityAnim = null; scrollingTabContainerView.setVisibility(this.mFinalVisibility); } } @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener public void onAnimationStart(Animator animator) { ScrollingTabContainerView.this.setVisibility(0); this.mCanceled = false; } public VisibilityAnimListener withFinalVisibility(ViewPropertyAnimator viewPropertyAnimator, int i) { this.mFinalVisibility = i; ScrollingTabContainerView.this.mVisibilityAnim = viewPropertyAnimator; return this; } } public ScrollingTabContainerView(@NonNull Context context) { super(context); setHorizontalScrollBarEnabled(false); ActionBarPolicy actionBarPolicy = ActionBarPolicy.get(context); setContentHeight(actionBarPolicy.getTabContainerHeight()); this.mStackedTabMaxWidth = actionBarPolicy.getStackedTabMaxWidth(); LinearLayoutCompat createTabLayout = createTabLayout(); this.mTabLayout = createTabLayout; addView(createTabLayout, new ViewGroup.LayoutParams(-2, -1)); } private Spinner createSpinner() { AppCompatSpinner appCompatSpinner = new AppCompatSpinner(getContext(), null, R.attr.actionDropDownStyle); appCompatSpinner.setLayoutParams(new LinearLayoutCompat.LayoutParams(-2, -1)); appCompatSpinner.setOnItemSelectedListener(this); return appCompatSpinner; } private LinearLayoutCompat createTabLayout() { LinearLayoutCompat linearLayoutCompat = new LinearLayoutCompat(getContext(), null, R.attr.actionBarTabBarStyle); linearLayoutCompat.setMeasureWithLargestChildEnabled(true); linearLayoutCompat.setGravity(17); linearLayoutCompat.setLayoutParams(new LinearLayoutCompat.LayoutParams(-2, -1)); return linearLayoutCompat; } private boolean isCollapsed() { Spinner spinner = this.mTabSpinner; return spinner != null && spinner.getParent() == this; } private void performCollapse() { if (!isCollapsed()) { if (this.mTabSpinner == null) { this.mTabSpinner = createSpinner(); } removeView(this.mTabLayout); addView(this.mTabSpinner, new ViewGroup.LayoutParams(-2, -1)); if (this.mTabSpinner.getAdapter() == null) { this.mTabSpinner.setAdapter((SpinnerAdapter) new TabAdapter()); } Runnable runnable = this.mTabSelector; if (runnable != null) { removeCallbacks(runnable); this.mTabSelector = null; } this.mTabSpinner.setSelection(this.mSelectedTabIndex); } } private boolean performExpand() { if (!isCollapsed()) { return false; } removeView(this.mTabSpinner); addView(this.mTabLayout, new ViewGroup.LayoutParams(-2, -1)); setTabSelected(this.mTabSpinner.getSelectedItemPosition()); return false; } public void addTab(ActionBar.Tab tab, int i, boolean z2) { TabView createTabView = createTabView(tab, false); this.mTabLayout.addView(createTabView, i, new LinearLayoutCompat.LayoutParams(0, -1, 1.0f)); Spinner spinner = this.mTabSpinner; if (spinner != null) { ((TabAdapter) spinner.getAdapter()).notifyDataSetChanged(); } if (z2) { createTabView.setSelected(true); } if (this.mAllowCollapse) { requestLayout(); } } public void addTab(ActionBar.Tab tab, boolean z2) { TabView createTabView = createTabView(tab, false); this.mTabLayout.addView(createTabView, new LinearLayoutCompat.LayoutParams(0, -1, 1.0f)); Spinner spinner = this.mTabSpinner; if (spinner != null) { ((TabAdapter) spinner.getAdapter()).notifyDataSetChanged(); } if (z2) { createTabView.setSelected(true); } if (this.mAllowCollapse) { requestLayout(); } } public void animateToTab(int i) { View childAt = this.mTabLayout.getChildAt(i); Runnable runnable = this.mTabSelector; if (runnable != null) { removeCallbacks(runnable); } AnonymousClass1 r0 = new AnonymousClass1(childAt); this.mTabSelector = r0; post(r0); } public void animateToVisibility(int i) { ViewPropertyAnimator viewPropertyAnimator = this.mVisibilityAnim; if (viewPropertyAnimator != null) { viewPropertyAnimator.cancel(); } if (i == 0) { if (getVisibility() != 0) { setAlpha(0.0f); } ViewPropertyAnimator alpha = animate().alpha(1.0f); alpha.setDuration(200); alpha.setInterpolator(sAlphaInterpolator); alpha.setListener(this.mVisAnimListener.withFinalVisibility(alpha, i)); alpha.start(); return; } ViewPropertyAnimator alpha2 = animate().alpha(0.0f); alpha2.setDuration(200); alpha2.setInterpolator(sAlphaInterpolator); alpha2.setListener(this.mVisAnimListener.withFinalVisibility(alpha2, i)); alpha2.start(); } public TabView createTabView(ActionBar.Tab tab, boolean z2) { TabView tabView = new TabView(getContext(), tab, z2); if (z2) { tabView.setBackgroundDrawable(null); tabView.setLayoutParams(new AbsListView.LayoutParams(-1, this.mContentHeight)); } else { tabView.setFocusable(true); if (this.mTabClickListener == null) { this.mTabClickListener = new TabClickListener(); } tabView.setOnClickListener(this.mTabClickListener); } return tabView; } @Override // android.view.View, android.view.ViewGroup public void onAttachedToWindow() { super.onAttachedToWindow(); Runnable runnable = this.mTabSelector; if (runnable != null) { post(runnable); } } @Override // android.view.View public void onConfigurationChanged(Configuration configuration) { super.onConfigurationChanged(configuration); ActionBarPolicy actionBarPolicy = ActionBarPolicy.get(getContext()); setContentHeight(actionBarPolicy.getTabContainerHeight()); this.mStackedTabMaxWidth = actionBarPolicy.getStackedTabMaxWidth(); } @Override // android.view.View, android.view.ViewGroup public void onDetachedFromWindow() { super.onDetachedFromWindow(); Runnable runnable = this.mTabSelector; if (runnable != null) { removeCallbacks(runnable); } } @Override // android.widget.AdapterView.OnItemSelectedListener public void onItemSelected(AdapterView adapterView, View view, int i, long j) { ((TabView) view).getTab().select(); } @Override // android.widget.HorizontalScrollView, android.widget.FrameLayout, android.view.View public void onMeasure(int i, int i2) { int mode = View.MeasureSpec.getMode(i); boolean z2 = true; boolean z3 = mode == 1073741824; setFillViewport(z3); int childCount = this.mTabLayout.getChildCount(); if (childCount <= 1 || !(mode == 1073741824 || mode == Integer.MIN_VALUE)) { this.mMaxTabWidth = -1; } else { if (childCount > 2) { this.mMaxTabWidth = (int) (((float) View.MeasureSpec.getSize(i)) * 0.4f); } else { this.mMaxTabWidth = View.MeasureSpec.getSize(i) / 2; } this.mMaxTabWidth = Math.min(this.mMaxTabWidth, this.mStackedTabMaxWidth); } int makeMeasureSpec = View.MeasureSpec.makeMeasureSpec(this.mContentHeight, BasicMeasure.EXACTLY); if (z3 || !this.mAllowCollapse) { z2 = false; } if (z2) { this.mTabLayout.measure(0, makeMeasureSpec); if (this.mTabLayout.getMeasuredWidth() > View.MeasureSpec.getSize(i)) { performCollapse(); } else { performExpand(); } } else { performExpand(); } int measuredWidth = getMeasuredWidth(); super.onMeasure(i, makeMeasureSpec); int measuredWidth2 = getMeasuredWidth(); if (z3 && measuredWidth != measuredWidth2) { setTabSelected(this.mSelectedTabIndex); } } @Override // android.widget.AdapterView.OnItemSelectedListener public void onNothingSelected(AdapterView adapterView) { } public void removeAllTabs() { this.mTabLayout.removeAllViews(); Spinner spinner = this.mTabSpinner; if (spinner != null) { ((TabAdapter) spinner.getAdapter()).notifyDataSetChanged(); } if (this.mAllowCollapse) { requestLayout(); } } public void removeTabAt(int i) { this.mTabLayout.removeViewAt(i); Spinner spinner = this.mTabSpinner; if (spinner != null) { ((TabAdapter) spinner.getAdapter()).notifyDataSetChanged(); } if (this.mAllowCollapse) { requestLayout(); } } public void setAllowCollapse(boolean z2) { this.mAllowCollapse = z2; } public void setContentHeight(int i) { this.mContentHeight = i; requestLayout(); } public void setTabSelected(int i) { this.mSelectedTabIndex = i; int childCount = this.mTabLayout.getChildCount(); int i2 = 0; while (i2 < childCount) { View childAt = this.mTabLayout.getChildAt(i2); boolean z2 = i2 == i; childAt.setSelected(z2); if (z2) { animateToTab(i); } i2++; } Spinner spinner = this.mTabSpinner; if (spinner != null && i >= 0) { spinner.setSelection(i); } } public void updateTab(int i) { ((TabView) this.mTabLayout.getChildAt(i)).update(); Spinner spinner = this.mTabSpinner; if (spinner != null) { ((TabAdapter) spinner.getAdapter()).notifyDataSetChanged(); } if (this.mAllowCollapse) { requestLayout(); } } }