195 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			195 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.bottomsheet;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.util.AttributeSet;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import android.view.accessibility.AccessibilityEvent;
 | |
| import android.view.accessibility.AccessibilityManager;
 | |
| import androidx.appcompat.widget.AppCompatImageView;
 | |
| import androidx.coordinatorlayout.widget.CoordinatorLayout;
 | |
| import androidx.core.view.AccessibilityDelegateCompat;
 | |
| import androidx.core.view.ViewCompat;
 | |
| import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
 | |
| import androidx.core.view.accessibility.AccessibilityViewCommand;
 | |
| import com.google.android.material.R;
 | |
| import com.google.android.material.bottomsheet.BottomSheetBehavior;
 | |
| import com.google.android.material.theme.overlay.MaterialThemeOverlay;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class BottomSheetDragHandleView extends AppCompatImageView implements AccessibilityManager.AccessibilityStateChangeListener {
 | |
|     private static final int DEF_STYLE_RES = R.style.Widget_Material3_BottomSheet_DragHandle;
 | |
|     private final AccessibilityManager accessibilityManager;
 | |
|     private boolean accessibilityServiceEnabled;
 | |
|     private BottomSheetBehavior<?> bottomSheetBehavior;
 | |
|     private final BottomSheetBehavior.BottomSheetCallback bottomSheetCallback;
 | |
|     private final String clickFeedback;
 | |
|     private final String clickToCollapseActionLabel;
 | |
|     private boolean clickToExpand;
 | |
|     private final String clickToExpandActionLabel;
 | |
|     private boolean interactable;
 | |
| 
 | |
|     public BottomSheetDragHandleView(Context context) {
 | |
|         this(context, null);
 | |
|     }
 | |
| 
 | |
|     public BottomSheetDragHandleView(Context context, AttributeSet attributeSet) {
 | |
|         this(context, attributeSet, R.attr.bottomSheetDragHandleStyle);
 | |
|     }
 | |
| 
 | |
|     public BottomSheetDragHandleView(Context context, AttributeSet attributeSet, int i) {
 | |
|         super(MaterialThemeOverlay.wrap(context, attributeSet, i, DEF_STYLE_RES), attributeSet, i);
 | |
|         this.clickToExpandActionLabel = getResources().getString(R.string.bottomsheet_action_expand);
 | |
|         this.clickToCollapseActionLabel = getResources().getString(R.string.bottomsheet_action_collapse);
 | |
|         this.clickFeedback = getResources().getString(R.string.bottomsheet_drag_handle_clicked);
 | |
|         this.bottomSheetCallback = new BottomSheetBehavior.BottomSheetCallback() { // from class: com.google.android.material.bottomsheet.BottomSheetDragHandleView.1
 | |
|             @Override // com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
 | |
|             public void onSlide(View view, float f) {
 | |
|             }
 | |
| 
 | |
|             @Override // com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
 | |
|             public void onStateChanged(View view, int i2) {
 | |
|                 BottomSheetDragHandleView.this.onBottomSheetStateChanged(i2);
 | |
|             }
 | |
|         };
 | |
|         this.accessibilityManager = (AccessibilityManager) getContext().getSystemService("accessibility");
 | |
|         updateInteractableState();
 | |
|         ViewCompat.setAccessibilityDelegate(this, new AccessibilityDelegateCompat() { // from class: com.google.android.material.bottomsheet.BottomSheetDragHandleView.2
 | |
|             @Override // androidx.core.view.AccessibilityDelegateCompat
 | |
|             public void onPopulateAccessibilityEvent(View view, AccessibilityEvent accessibilityEvent) {
 | |
|                 super.onPopulateAccessibilityEvent(view, accessibilityEvent);
 | |
|                 if (accessibilityEvent.getEventType() == 1) {
 | |
|                     BottomSheetDragHandleView.this.expandOrCollapseBottomSheetIfPossible();
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     @Override // android.widget.ImageView, android.view.View
 | |
|     protected void onAttachedToWindow() {
 | |
|         super.onAttachedToWindow();
 | |
|         setBottomSheetBehavior(findParentBottomSheetBehavior());
 | |
|         AccessibilityManager accessibilityManager = this.accessibilityManager;
 | |
|         if (accessibilityManager != null) {
 | |
|             accessibilityManager.addAccessibilityStateChangeListener(this);
 | |
|             onAccessibilityStateChanged(this.accessibilityManager.isEnabled());
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // android.widget.ImageView, android.view.View
 | |
|     protected void onDetachedFromWindow() {
 | |
|         AccessibilityManager accessibilityManager = this.accessibilityManager;
 | |
|         if (accessibilityManager != null) {
 | |
|             accessibilityManager.removeAccessibilityStateChangeListener(this);
 | |
|         }
 | |
|         setBottomSheetBehavior(null);
 | |
|         super.onDetachedFromWindow();
 | |
|     }
 | |
| 
 | |
|     @Override // android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener
 | |
|     public void onAccessibilityStateChanged(boolean z) {
 | |
|         this.accessibilityServiceEnabled = z;
 | |
|         updateInteractableState();
 | |
|     }
 | |
| 
 | |
|     private void setBottomSheetBehavior(BottomSheetBehavior<?> bottomSheetBehavior) {
 | |
|         BottomSheetBehavior<?> bottomSheetBehavior2 = this.bottomSheetBehavior;
 | |
|         if (bottomSheetBehavior2 != null) {
 | |
|             bottomSheetBehavior2.removeBottomSheetCallback(this.bottomSheetCallback);
 | |
|             this.bottomSheetBehavior.setAccessibilityDelegateView(null);
 | |
|         }
 | |
|         this.bottomSheetBehavior = bottomSheetBehavior;
 | |
|         if (bottomSheetBehavior != null) {
 | |
|             bottomSheetBehavior.setAccessibilityDelegateView(this);
 | |
|             onBottomSheetStateChanged(this.bottomSheetBehavior.getState());
 | |
|             this.bottomSheetBehavior.addBottomSheetCallback(this.bottomSheetCallback);
 | |
|         }
 | |
|         updateInteractableState();
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public void onBottomSheetStateChanged(int i) {
 | |
|         if (i == 4) {
 | |
|             this.clickToExpand = true;
 | |
|         } else if (i == 3) {
 | |
|             this.clickToExpand = false;
 | |
|         }
 | |
|         ViewCompat.replaceAccessibilityAction(this, AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK, this.clickToExpand ? this.clickToExpandActionLabel : this.clickToCollapseActionLabel, new AccessibilityViewCommand() { // from class: com.google.android.material.bottomsheet.BottomSheetDragHandleView$$ExternalSyntheticLambda0
 | |
|             @Override // androidx.core.view.accessibility.AccessibilityViewCommand
 | |
|             public final boolean perform(View view, AccessibilityViewCommand.CommandArguments commandArguments) {
 | |
|                 return BottomSheetDragHandleView.this.m192xa7b4c95f(view, commandArguments);
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /* renamed from: lambda$onBottomSheetStateChanged$0$com-google-android-material-bottomsheet-BottomSheetDragHandleView, reason: not valid java name */
 | |
|     /* synthetic */ boolean m192xa7b4c95f(View view, AccessibilityViewCommand.CommandArguments commandArguments) {
 | |
|         return expandOrCollapseBottomSheetIfPossible();
 | |
|     }
 | |
| 
 | |
|     private void updateInteractableState() {
 | |
|         this.interactable = this.accessibilityServiceEnabled && this.bottomSheetBehavior != null;
 | |
|         ViewCompat.setImportantForAccessibility(this, this.bottomSheetBehavior == null ? 2 : 1);
 | |
|         setClickable(this.interactable);
 | |
|     }
 | |
| 
 | |
|     /* JADX INFO: Access modifiers changed from: private */
 | |
|     public boolean expandOrCollapseBottomSheetIfPossible() {
 | |
|         boolean z = false;
 | |
|         if (!this.interactable) {
 | |
|             return false;
 | |
|         }
 | |
|         announceAccessibilityEvent(this.clickFeedback);
 | |
|         if (!this.bottomSheetBehavior.isFitToContents() && !this.bottomSheetBehavior.shouldSkipHalfExpandedStateWhenDragging()) {
 | |
|             z = true;
 | |
|         }
 | |
|         int state = this.bottomSheetBehavior.getState();
 | |
|         int i = 6;
 | |
|         if (state == 4) {
 | |
|             if (!z) {
 | |
|                 i = 3;
 | |
|             }
 | |
|         } else if (state != 3) {
 | |
|             i = this.clickToExpand ? 3 : 4;
 | |
|         } else if (!z) {
 | |
|             i = 4;
 | |
|         }
 | |
|         this.bottomSheetBehavior.setState(i);
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
|     private void announceAccessibilityEvent(String str) {
 | |
|         if (this.accessibilityManager == null) {
 | |
|             return;
 | |
|         }
 | |
|         AccessibilityEvent obtain = AccessibilityEvent.obtain(16384);
 | |
|         obtain.getText().add(str);
 | |
|         this.accessibilityManager.sendAccessibilityEvent(obtain);
 | |
|     }
 | |
| 
 | |
|     private BottomSheetBehavior<?> findParentBottomSheetBehavior() {
 | |
|         View view = this;
 | |
|         while (true) {
 | |
|             view = getParentView(view);
 | |
|             if (view == null) {
 | |
|                 return null;
 | |
|             }
 | |
|             ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
 | |
|             if (layoutParams instanceof CoordinatorLayout.LayoutParams) {
 | |
|                 CoordinatorLayout.Behavior behavior = ((CoordinatorLayout.LayoutParams) layoutParams).getBehavior();
 | |
|                 if (behavior instanceof BottomSheetBehavior) {
 | |
|                     return (BottomSheetBehavior) behavior;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private static View getParentView(View view) {
 | |
|         Object parent = view.getParent();
 | |
|         if (parent instanceof View) {
 | |
|             return (View) parent;
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| }
 |