130 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.snackbar;
 | |
| 
 | |
| import android.animation.TimeInterpolator;
 | |
| import android.content.Context;
 | |
| import android.text.Layout;
 | |
| import android.util.AttributeSet;
 | |
| import android.view.View;
 | |
| import android.widget.Button;
 | |
| import android.widget.LinearLayout;
 | |
| import android.widget.TextView;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import com.google.android.material.R;
 | |
| import com.google.android.material.animation.AnimationUtils;
 | |
| import com.google.android.material.color.MaterialColors;
 | |
| import com.google.android.material.motion.MotionUtils;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class SnackbarContentLayout extends LinearLayout implements ContentViewCallback {
 | |
|     private Button actionView;
 | |
|     private final TimeInterpolator contentInterpolator;
 | |
|     private int maxInlineActionWidth;
 | |
|     private TextView messageView;
 | |
| 
 | |
|     public Button getActionView() {
 | |
|         return this.actionView;
 | |
|     }
 | |
| 
 | |
|     public TextView getMessageView() {
 | |
|         return this.messageView;
 | |
|     }
 | |
| 
 | |
|     public void setMaxInlineActionWidth(int i) {
 | |
|         this.maxInlineActionWidth = i;
 | |
|     }
 | |
| 
 | |
|     public SnackbarContentLayout(Context context) {
 | |
|         this(context, null);
 | |
|     }
 | |
| 
 | |
|     public SnackbarContentLayout(Context context, AttributeSet attributeSet) {
 | |
|         super(context, attributeSet);
 | |
|         this.contentInterpolator = MotionUtils.resolveThemeInterpolator(context, R.attr.motionEasingEmphasizedInterpolator, AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR);
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     protected void onFinishInflate() {
 | |
|         super.onFinishInflate();
 | |
|         this.messageView = (TextView) findViewById(R.id.snackbar_text);
 | |
|         this.actionView = (Button) findViewById(R.id.snackbar_action);
 | |
|     }
 | |
| 
 | |
|     void updateActionTextColorAlphaIfNeeded(float f) {
 | |
|         if (f != 1.0f) {
 | |
|             this.actionView.setTextColor(MaterialColors.layer(MaterialColors.getColor(this, R.attr.colorSurface), this.actionView.getCurrentTextColor(), f));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // android.widget.LinearLayout, android.view.View
 | |
|     protected void onMeasure(int i, int i2) {
 | |
|         super.onMeasure(i, i2);
 | |
|         if (getOrientation() == 1) {
 | |
|             return;
 | |
|         }
 | |
|         int dimensionPixelSize = getResources().getDimensionPixelSize(R.dimen.design_snackbar_padding_vertical_2lines);
 | |
|         int dimensionPixelSize2 = getResources().getDimensionPixelSize(R.dimen.design_snackbar_padding_vertical);
 | |
|         Layout layout = this.messageView.getLayout();
 | |
|         boolean z = layout != null && layout.getLineCount() > 1;
 | |
|         if (z && this.maxInlineActionWidth > 0 && this.actionView.getMeasuredWidth() > this.maxInlineActionWidth) {
 | |
|             if (!updateViewsWithinLayout(1, dimensionPixelSize, dimensionPixelSize - dimensionPixelSize2)) {
 | |
|                 return;
 | |
|             }
 | |
|         } else {
 | |
|             if (!z) {
 | |
|                 dimensionPixelSize = dimensionPixelSize2;
 | |
|             }
 | |
|             if (!updateViewsWithinLayout(0, dimensionPixelSize, dimensionPixelSize)) {
 | |
|                 return;
 | |
|             }
 | |
|         }
 | |
|         super.onMeasure(i, i2);
 | |
|     }
 | |
| 
 | |
|     private boolean updateViewsWithinLayout(int i, int i2, int i3) {
 | |
|         boolean z;
 | |
|         if (i != getOrientation()) {
 | |
|             setOrientation(i);
 | |
|             z = true;
 | |
|         } else {
 | |
|             z = false;
 | |
|         }
 | |
|         if (this.messageView.getPaddingTop() == i2 && this.messageView.getPaddingBottom() == i3) {
 | |
|             return z;
 | |
|         }
 | |
|         updateTopBottomPadding(this.messageView, i2, i3);
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     private static void updateTopBottomPadding(View view, int i, int i2) {
 | |
|         if (ViewCompat.isPaddingRelative(view)) {
 | |
|             ViewCompat.setPaddingRelative(view, ViewCompat.getPaddingStart(view), i, ViewCompat.getPaddingEnd(view), i2);
 | |
|         } else {
 | |
|             view.setPadding(view.getPaddingLeft(), i, view.getPaddingRight(), i2);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // com.google.android.material.snackbar.ContentViewCallback
 | |
|     public void animateContentIn(int i, int i2) {
 | |
|         this.messageView.setAlpha(0.0f);
 | |
|         long j = i2;
 | |
|         long j2 = i;
 | |
|         this.messageView.animate().alpha(1.0f).setDuration(j).setInterpolator(this.contentInterpolator).setStartDelay(j2).start();
 | |
|         if (this.actionView.getVisibility() == 0) {
 | |
|             this.actionView.setAlpha(0.0f);
 | |
|             this.actionView.animate().alpha(1.0f).setDuration(j).setInterpolator(this.contentInterpolator).setStartDelay(j2).start();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // com.google.android.material.snackbar.ContentViewCallback
 | |
|     public void animateContentOut(int i, int i2) {
 | |
|         this.messageView.setAlpha(1.0f);
 | |
|         long j = i2;
 | |
|         long j2 = i;
 | |
|         this.messageView.animate().alpha(0.0f).setDuration(j).setInterpolator(this.contentInterpolator).setStartDelay(j2).start();
 | |
|         if (this.actionView.getVisibility() == 0) {
 | |
|             this.actionView.setAlpha(1.0f);
 | |
|             this.actionView.animate().alpha(0.0f).setDuration(j).setInterpolator(this.contentInterpolator).setStartDelay(j2).start();
 | |
|         }
 | |
|     }
 | |
| }
 |