148 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.timepicker;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.content.res.ColorStateList;
 | |
| import android.content.res.TypedArray;
 | |
| import android.graphics.drawable.Drawable;
 | |
| import android.os.Handler;
 | |
| import android.util.AttributeSet;
 | |
| import android.view.LayoutInflater;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import androidx.constraintlayout.widget.ConstraintLayout;
 | |
| import androidx.constraintlayout.widget.ConstraintSet;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import com.google.android.material.R;
 | |
| import com.google.android.material.shape.MaterialShapeDrawable;
 | |
| import com.google.android.material.shape.RelativeCornerSize;
 | |
| import java.util.ArrayList;
 | |
| import java.util.HashMap;
 | |
| import java.util.Iterator;
 | |
| import java.util.List;
 | |
| import java.util.Map;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| class RadialViewGroup extends ConstraintLayout {
 | |
|     static final int LEVEL_1 = 1;
 | |
|     static final int LEVEL_2 = 2;
 | |
|     static final float LEVEL_RADIUS_RATIO = 0.66f;
 | |
|     private static final String SKIP_TAG = "skip";
 | |
|     private MaterialShapeDrawable background;
 | |
|     private int radius;
 | |
|     private final Runnable updateLayoutParametersRunnable;
 | |
| 
 | |
|     public int getRadius() {
 | |
|         return this.radius;
 | |
|     }
 | |
| 
 | |
|     public RadialViewGroup(Context context) {
 | |
|         this(context, null);
 | |
|     }
 | |
| 
 | |
|     public RadialViewGroup(Context context, AttributeSet attributeSet) {
 | |
|         this(context, attributeSet, 0);
 | |
|     }
 | |
| 
 | |
|     public RadialViewGroup(Context context, AttributeSet attributeSet, int i) {
 | |
|         super(context, attributeSet, i);
 | |
|         LayoutInflater.from(context).inflate(R.layout.material_radial_view_group, this);
 | |
|         ViewCompat.setBackground(this, createBackground());
 | |
|         TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.RadialViewGroup, i, 0);
 | |
|         this.radius = obtainStyledAttributes.getDimensionPixelSize(R.styleable.RadialViewGroup_materialCircleRadius, 0);
 | |
|         this.updateLayoutParametersRunnable = new Runnable() { // from class: com.google.android.material.timepicker.RadialViewGroup$$ExternalSyntheticLambda0
 | |
|             @Override // java.lang.Runnable
 | |
|             public final void run() {
 | |
|                 RadialViewGroup.this.updateLayoutParams();
 | |
|             }
 | |
|         };
 | |
|         obtainStyledAttributes.recycle();
 | |
|     }
 | |
| 
 | |
|     private Drawable createBackground() {
 | |
|         MaterialShapeDrawable materialShapeDrawable = new MaterialShapeDrawable();
 | |
|         this.background = materialShapeDrawable;
 | |
|         materialShapeDrawable.setCornerSize(new RelativeCornerSize(0.5f));
 | |
|         this.background.setFillColor(ColorStateList.valueOf(-1));
 | |
|         return this.background;
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     public void setBackgroundColor(int i) {
 | |
|         this.background.setFillColor(ColorStateList.valueOf(i));
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.ViewGroup
 | |
|     public void addView(View view, int i, ViewGroup.LayoutParams layoutParams) {
 | |
|         super.addView(view, i, layoutParams);
 | |
|         if (view.getId() == -1) {
 | |
|             view.setId(ViewCompat.generateViewId());
 | |
|         }
 | |
|         updateLayoutParamsAsync();
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.constraintlayout.widget.ConstraintLayout, android.view.ViewGroup
 | |
|     public void onViewRemoved(View view) {
 | |
|         super.onViewRemoved(view);
 | |
|         updateLayoutParamsAsync();
 | |
|     }
 | |
| 
 | |
|     private void updateLayoutParamsAsync() {
 | |
|         Handler handler = getHandler();
 | |
|         if (handler != null) {
 | |
|             handler.removeCallbacks(this.updateLayoutParametersRunnable);
 | |
|             handler.post(this.updateLayoutParametersRunnable);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.View
 | |
|     protected void onFinishInflate() {
 | |
|         super.onFinishInflate();
 | |
|         updateLayoutParams();
 | |
|     }
 | |
| 
 | |
|     protected void updateLayoutParams() {
 | |
|         ConstraintSet constraintSet = new ConstraintSet();
 | |
|         constraintSet.clone(this);
 | |
|         HashMap hashMap = new HashMap();
 | |
|         for (int i = 0; i < getChildCount(); i++) {
 | |
|             View childAt = getChildAt(i);
 | |
|             if (childAt.getId() != R.id.circle_center && !shouldSkipView(childAt)) {
 | |
|                 int i2 = (Integer) childAt.getTag(R.id.material_clock_level);
 | |
|                 if (i2 == null) {
 | |
|                     i2 = 1;
 | |
|                 }
 | |
|                 if (!hashMap.containsKey(i2)) {
 | |
|                     hashMap.put(i2, new ArrayList());
 | |
|                 }
 | |
|                 ((List) hashMap.get(i2)).add(childAt);
 | |
|             }
 | |
|         }
 | |
|         for (Map.Entry entry : hashMap.entrySet()) {
 | |
|             addConstraints((List) entry.getValue(), constraintSet, getLeveledRadius(((Integer) entry.getKey()).intValue()));
 | |
|         }
 | |
|         constraintSet.applyTo(this);
 | |
|     }
 | |
| 
 | |
|     private void addConstraints(List<View> list, ConstraintSet constraintSet, int i) {
 | |
|         Iterator<View> it = list.iterator();
 | |
|         float f = 0.0f;
 | |
|         while (it.hasNext()) {
 | |
|             constraintSet.constrainCircle(it.next().getId(), R.id.circle_center, i, f);
 | |
|             f += 360.0f / list.size();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void setRadius(int i) {
 | |
|         this.radius = i;
 | |
|         updateLayoutParams();
 | |
|     }
 | |
| 
 | |
|     int getLeveledRadius(int i) {
 | |
|         return i == 2 ? Math.round(this.radius * LEVEL_RADIUS_RATIO) : this.radius;
 | |
|     }
 | |
| 
 | |
|     private static boolean shouldSkipView(View view) {
 | |
|         return SKIP_TAG.equals(view.getTag());
 | |
|     }
 | |
| }
 |