149 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.appcompat.widget;
 | |
| 
 | |
| import android.content.res.ColorStateList;
 | |
| import android.graphics.Canvas;
 | |
| import android.graphics.PorterDuff;
 | |
| import android.graphics.drawable.Drawable;
 | |
| import android.util.AttributeSet;
 | |
| import android.widget.SeekBar;
 | |
| import androidx.appcompat.R;
 | |
| import androidx.core.graphics.drawable.DrawableCompat;
 | |
| import androidx.core.view.ViewCompat;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| class AppCompatSeekBarHelper extends AppCompatProgressBarHelper {
 | |
|     private boolean mHasTickMarkTint;
 | |
|     private boolean mHasTickMarkTintMode;
 | |
|     private Drawable mTickMark;
 | |
|     private ColorStateList mTickMarkTintList;
 | |
|     private PorterDuff.Mode mTickMarkTintMode;
 | |
|     private final SeekBar mView;
 | |
| 
 | |
|     Drawable getTickMark() {
 | |
|         return this.mTickMark;
 | |
|     }
 | |
| 
 | |
|     ColorStateList getTickMarkTintList() {
 | |
|         return this.mTickMarkTintList;
 | |
|     }
 | |
| 
 | |
|     PorterDuff.Mode getTickMarkTintMode() {
 | |
|         return this.mTickMarkTintMode;
 | |
|     }
 | |
| 
 | |
|     AppCompatSeekBarHelper(SeekBar seekBar) {
 | |
|         super(seekBar);
 | |
|         this.mTickMarkTintList = null;
 | |
|         this.mTickMarkTintMode = null;
 | |
|         this.mHasTickMarkTint = false;
 | |
|         this.mHasTickMarkTintMode = false;
 | |
|         this.mView = seekBar;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.appcompat.widget.AppCompatProgressBarHelper
 | |
|     void loadFromAttributes(AttributeSet attributeSet, int i) {
 | |
|         super.loadFromAttributes(attributeSet, i);
 | |
|         TintTypedArray obtainStyledAttributes = TintTypedArray.obtainStyledAttributes(this.mView.getContext(), attributeSet, R.styleable.AppCompatSeekBar, i, 0);
 | |
|         SeekBar seekBar = this.mView;
 | |
|         ViewCompat.saveAttributeDataForStyleable(seekBar, seekBar.getContext(), R.styleable.AppCompatSeekBar, attributeSet, obtainStyledAttributes.getWrappedTypeArray(), i, 0);
 | |
|         Drawable drawableIfKnown = obtainStyledAttributes.getDrawableIfKnown(R.styleable.AppCompatSeekBar_android_thumb);
 | |
|         if (drawableIfKnown != null) {
 | |
|             this.mView.setThumb(drawableIfKnown);
 | |
|         }
 | |
|         setTickMark(obtainStyledAttributes.getDrawable(R.styleable.AppCompatSeekBar_tickMark));
 | |
|         if (obtainStyledAttributes.hasValue(R.styleable.AppCompatSeekBar_tickMarkTintMode)) {
 | |
|             this.mTickMarkTintMode = DrawableUtils.parseTintMode(obtainStyledAttributes.getInt(R.styleable.AppCompatSeekBar_tickMarkTintMode, -1), this.mTickMarkTintMode);
 | |
|             this.mHasTickMarkTintMode = true;
 | |
|         }
 | |
|         if (obtainStyledAttributes.hasValue(R.styleable.AppCompatSeekBar_tickMarkTint)) {
 | |
|             this.mTickMarkTintList = obtainStyledAttributes.getColorStateList(R.styleable.AppCompatSeekBar_tickMarkTint);
 | |
|             this.mHasTickMarkTint = true;
 | |
|         }
 | |
|         obtainStyledAttributes.recycle();
 | |
|         applyTickMarkTint();
 | |
|     }
 | |
| 
 | |
|     void setTickMark(Drawable drawable) {
 | |
|         Drawable drawable2 = this.mTickMark;
 | |
|         if (drawable2 != null) {
 | |
|             drawable2.setCallback(null);
 | |
|         }
 | |
|         this.mTickMark = drawable;
 | |
|         if (drawable != null) {
 | |
|             drawable.setCallback(this.mView);
 | |
|             DrawableCompat.setLayoutDirection(drawable, ViewCompat.getLayoutDirection(this.mView));
 | |
|             if (drawable.isStateful()) {
 | |
|                 drawable.setState(this.mView.getDrawableState());
 | |
|             }
 | |
|             applyTickMarkTint();
 | |
|         }
 | |
|         this.mView.invalidate();
 | |
|     }
 | |
| 
 | |
|     void setTickMarkTintList(ColorStateList colorStateList) {
 | |
|         this.mTickMarkTintList = colorStateList;
 | |
|         this.mHasTickMarkTint = true;
 | |
|         applyTickMarkTint();
 | |
|     }
 | |
| 
 | |
|     void setTickMarkTintMode(PorterDuff.Mode mode) {
 | |
|         this.mTickMarkTintMode = mode;
 | |
|         this.mHasTickMarkTintMode = true;
 | |
|         applyTickMarkTint();
 | |
|     }
 | |
| 
 | |
|     private void applyTickMarkTint() {
 | |
|         Drawable drawable = this.mTickMark;
 | |
|         if (drawable != null) {
 | |
|             if (this.mHasTickMarkTint || this.mHasTickMarkTintMode) {
 | |
|                 Drawable wrap = DrawableCompat.wrap(drawable.mutate());
 | |
|                 this.mTickMark = wrap;
 | |
|                 if (this.mHasTickMarkTint) {
 | |
|                     DrawableCompat.setTintList(wrap, this.mTickMarkTintList);
 | |
|                 }
 | |
|                 if (this.mHasTickMarkTintMode) {
 | |
|                     DrawableCompat.setTintMode(this.mTickMark, this.mTickMarkTintMode);
 | |
|                 }
 | |
|                 if (this.mTickMark.isStateful()) {
 | |
|                     this.mTickMark.setState(this.mView.getDrawableState());
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     void jumpDrawablesToCurrentState() {
 | |
|         Drawable drawable = this.mTickMark;
 | |
|         if (drawable != null) {
 | |
|             drawable.jumpToCurrentState();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     void drawableStateChanged() {
 | |
|         Drawable drawable = this.mTickMark;
 | |
|         if (drawable != null && drawable.isStateful() && drawable.setState(this.mView.getDrawableState())) {
 | |
|             this.mView.invalidateDrawable(drawable);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     void drawTickMarks(Canvas canvas) {
 | |
|         if (this.mTickMark != null) {
 | |
|             int max = this.mView.getMax();
 | |
|             if (max > 1) {
 | |
|                 int intrinsicWidth = this.mTickMark.getIntrinsicWidth();
 | |
|                 int intrinsicHeight = this.mTickMark.getIntrinsicHeight();
 | |
|                 int i = intrinsicWidth >= 0 ? intrinsicWidth / 2 : 1;
 | |
|                 int i2 = intrinsicHeight >= 0 ? intrinsicHeight / 2 : 1;
 | |
|                 this.mTickMark.setBounds(-i, -i2, i, i2);
 | |
|                 float width = ((this.mView.getWidth() - this.mView.getPaddingLeft()) - this.mView.getPaddingRight()) / max;
 | |
|                 int save = canvas.save();
 | |
|                 canvas.translate(this.mView.getPaddingLeft(), this.mView.getHeight() / 2);
 | |
|                 for (int i3 = 0; i3 <= max; i3++) {
 | |
|                     this.mTickMark.draw(canvas);
 | |
|                     canvas.translate(width, 0.0f);
 | |
|                 }
 | |
|                 canvas.restoreToCount(save);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |