ADD week 5
This commit is contained in:
		| @@ -0,0 +1,190 @@ | ||||
| package androidx.constraintlayout.widget; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.content.res.TypedArray; | ||||
| import android.graphics.Canvas; | ||||
| import android.util.AttributeSet; | ||||
| import android.view.View; | ||||
| import androidx.constraintlayout.motion.widget.MotionLayout; | ||||
| import androidx.constraintlayout.widget.ConstraintLayout; | ||||
| import androidx.constraintlayout.widget.SharedValues; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ReactiveGuide extends View implements SharedValues.SharedValuesListener { | ||||
|     private boolean mAnimateChange; | ||||
|     private boolean mApplyToAllConstraintSets; | ||||
|     private int mApplyToConstraintSetId; | ||||
|     private int mAttributeId; | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     public void draw(Canvas canvas) { | ||||
|     } | ||||
|  | ||||
|     public int getApplyToConstraintSetId() { | ||||
|         return this.mApplyToConstraintSetId; | ||||
|     } | ||||
|  | ||||
|     public int getAttributeId() { | ||||
|         return this.mAttributeId; | ||||
|     } | ||||
|  | ||||
|     public boolean isAnimatingChange() { | ||||
|         return this.mAnimateChange; | ||||
|     } | ||||
|  | ||||
|     public void setAnimateChange(boolean animate) { | ||||
|         this.mAnimateChange = animate; | ||||
|     } | ||||
|  | ||||
|     public void setApplyToConstraintSetId(int id) { | ||||
|         this.mApplyToConstraintSetId = id; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     public void setVisibility(int visibility) { | ||||
|     } | ||||
|  | ||||
|     public ReactiveGuide(Context context) { | ||||
|         super(context); | ||||
|         this.mAttributeId = -1; | ||||
|         this.mAnimateChange = false; | ||||
|         this.mApplyToConstraintSetId = 0; | ||||
|         this.mApplyToAllConstraintSets = true; | ||||
|         super.setVisibility(8); | ||||
|         init(null); | ||||
|     } | ||||
|  | ||||
|     public ReactiveGuide(Context context, AttributeSet attrs) { | ||||
|         super(context, attrs); | ||||
|         this.mAttributeId = -1; | ||||
|         this.mAnimateChange = false; | ||||
|         this.mApplyToConstraintSetId = 0; | ||||
|         this.mApplyToAllConstraintSets = true; | ||||
|         super.setVisibility(8); | ||||
|         init(attrs); | ||||
|     } | ||||
|  | ||||
|     public ReactiveGuide(Context context, AttributeSet attrs, int defStyleAttr) { | ||||
|         super(context, attrs, defStyleAttr); | ||||
|         this.mAttributeId = -1; | ||||
|         this.mAnimateChange = false; | ||||
|         this.mApplyToConstraintSetId = 0; | ||||
|         this.mApplyToAllConstraintSets = true; | ||||
|         super.setVisibility(8); | ||||
|         init(attrs); | ||||
|     } | ||||
|  | ||||
|     public ReactiveGuide(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { | ||||
|         super(context, attrs, defStyleAttr); | ||||
|         this.mAttributeId = -1; | ||||
|         this.mAnimateChange = false; | ||||
|         this.mApplyToConstraintSetId = 0; | ||||
|         this.mApplyToAllConstraintSets = true; | ||||
|         super.setVisibility(8); | ||||
|         init(attrs); | ||||
|     } | ||||
|  | ||||
|     private void init(AttributeSet attrs) { | ||||
|         if (attrs != null) { | ||||
|             TypedArray obtainStyledAttributes = getContext().obtainStyledAttributes(attrs, R.styleable.ConstraintLayout_ReactiveGuide); | ||||
|             int indexCount = obtainStyledAttributes.getIndexCount(); | ||||
|             for (int i = 0; i < indexCount; i++) { | ||||
|                 int index = obtainStyledAttributes.getIndex(i); | ||||
|                 if (index == R.styleable.ConstraintLayout_ReactiveGuide_reactiveGuide_valueId) { | ||||
|                     this.mAttributeId = obtainStyledAttributes.getResourceId(index, this.mAttributeId); | ||||
|                 } else if (index == R.styleable.ConstraintLayout_ReactiveGuide_reactiveGuide_animateChange) { | ||||
|                     this.mAnimateChange = obtainStyledAttributes.getBoolean(index, this.mAnimateChange); | ||||
|                 } else if (index == R.styleable.ConstraintLayout_ReactiveGuide_reactiveGuide_applyToConstraintSet) { | ||||
|                     this.mApplyToConstraintSetId = obtainStyledAttributes.getResourceId(index, this.mApplyToConstraintSetId); | ||||
|                 } else if (index == R.styleable.ConstraintLayout_ReactiveGuide_reactiveGuide_applyToAllConstraintSets) { | ||||
|                     this.mApplyToAllConstraintSets = obtainStyledAttributes.getBoolean(index, this.mApplyToAllConstraintSets); | ||||
|                 } | ||||
|             } | ||||
|             obtainStyledAttributes.recycle(); | ||||
|         } | ||||
|         if (this.mAttributeId != -1) { | ||||
|             ConstraintLayout.getSharedValues().addListener(this.mAttributeId, this); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void setAttributeId(int id) { | ||||
|         SharedValues sharedValues = ConstraintLayout.getSharedValues(); | ||||
|         int i = this.mAttributeId; | ||||
|         if (i != -1) { | ||||
|             sharedValues.removeListener(i, this); | ||||
|         } | ||||
|         this.mAttributeId = id; | ||||
|         if (id != -1) { | ||||
|             sharedValues.addListener(id, this); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { | ||||
|         setMeasuredDimension(0, 0); | ||||
|     } | ||||
|  | ||||
|     public void setGuidelineBegin(int margin) { | ||||
|         ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) getLayoutParams(); | ||||
|         layoutParams.guideBegin = margin; | ||||
|         setLayoutParams(layoutParams); | ||||
|     } | ||||
|  | ||||
|     public void setGuidelineEnd(int margin) { | ||||
|         ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) getLayoutParams(); | ||||
|         layoutParams.guideEnd = margin; | ||||
|         setLayoutParams(layoutParams); | ||||
|     } | ||||
|  | ||||
|     public void setGuidelinePercent(float ratio) { | ||||
|         ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) getLayoutParams(); | ||||
|         layoutParams.guidePercent = ratio; | ||||
|         setLayoutParams(layoutParams); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.constraintlayout.widget.SharedValues.SharedValuesListener | ||||
|     public void onNewValue(int key, int newValue, int oldValue) { | ||||
|         setGuidelineBegin(newValue); | ||||
|         int id = getId(); | ||||
|         if (id > 0 && (getParent() instanceof MotionLayout)) { | ||||
|             MotionLayout motionLayout = (MotionLayout) getParent(); | ||||
|             int currentState = motionLayout.getCurrentState(); | ||||
|             int i = this.mApplyToConstraintSetId; | ||||
|             if (i != 0) { | ||||
|                 currentState = i; | ||||
|             } | ||||
|             int i2 = 0; | ||||
|             if (!this.mAnimateChange) { | ||||
|                 if (this.mApplyToAllConstraintSets) { | ||||
|                     int[] constraintSetIds = motionLayout.getConstraintSetIds(); | ||||
|                     while (i2 < constraintSetIds.length) { | ||||
|                         changeValue(newValue, id, motionLayout, constraintSetIds[i2]); | ||||
|                         i2++; | ||||
|                     } | ||||
|                     return; | ||||
|                 } | ||||
|                 changeValue(newValue, id, motionLayout, currentState); | ||||
|                 return; | ||||
|             } | ||||
|             if (this.mApplyToAllConstraintSets) { | ||||
|                 int[] constraintSetIds2 = motionLayout.getConstraintSetIds(); | ||||
|                 while (i2 < constraintSetIds2.length) { | ||||
|                     int i3 = constraintSetIds2[i2]; | ||||
|                     if (i3 != currentState) { | ||||
|                         changeValue(newValue, id, motionLayout, i3); | ||||
|                     } | ||||
|                     i2++; | ||||
|                 } | ||||
|             } | ||||
|             ConstraintSet cloneConstraintSet = motionLayout.cloneConstraintSet(currentState); | ||||
|             cloneConstraintSet.setGuidelineEnd(id, newValue); | ||||
|             motionLayout.updateStateAnimate(currentState, cloneConstraintSet, 1000); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void changeValue(int newValue, int id, MotionLayout motionLayout, int currentState) { | ||||
|         ConstraintSet constraintSet = motionLayout.getConstraintSet(currentState); | ||||
|         constraintSet.setGuidelineEnd(id, newValue); | ||||
|         motionLayout.updateState(currentState, constraintSet); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user