|
31 | 31 | import android.graphics.Rect; |
32 | 32 | import android.graphics.RectF; |
33 | 33 | import android.graphics.Shader.TileMode; |
| 34 | +import android.os.Bundle; |
| 35 | +import android.os.SystemClock; |
34 | 36 | import androidx.appcompat.content.res.AppCompatResources; |
35 | 37 | import android.util.AttributeSet; |
36 | 38 | import android.util.DisplayMetrics; |
37 | 39 | import android.util.SparseArray; |
38 | 40 | import android.view.LayoutInflater; |
| 41 | +import android.view.MotionEvent; |
39 | 42 | import android.view.View; |
40 | 43 | import android.view.ViewTreeObserver.OnPreDrawListener; |
41 | 44 | import android.view.accessibility.AccessibilityNodeInfo; |
|
47 | 50 | import androidx.core.view.AccessibilityDelegateCompat; |
48 | 51 | import androidx.core.view.ViewCompat; |
49 | 52 | import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; |
| 53 | +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat; |
50 | 54 | import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat; |
51 | 55 | import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat; |
52 | 56 | import com.google.android.material.resources.MaterialResources; |
@@ -166,6 +170,22 @@ public void onInitializeAccessibilityNodeInfo( |
166 | 170 | /* selected= */ host.isSelected())); |
167 | 171 |
|
168 | 172 | info.setClickable(true); |
| 173 | + info.addAction(AccessibilityActionCompat.ACTION_CLICK); |
| 174 | + } |
| 175 | + |
| 176 | + @Override |
| 177 | + public boolean performAccessibilityAction(View host, int action, Bundle args) { |
| 178 | + if (action == AccessibilityNodeInfoCompat.ACTION_CLICK) { |
| 179 | + long eventTime = SystemClock.uptimeMillis(); |
| 180 | + float x = host.getX() + host.getWidth() / 2f; |
| 181 | + float y = host.getY() + host.getHeight() / 2f; |
| 182 | + clockHandView.onTouchEvent( |
| 183 | + MotionEvent.obtain(eventTime, eventTime, MotionEvent.ACTION_DOWN, x, y, 0)); |
| 184 | + clockHandView.onTouchEvent( |
| 185 | + MotionEvent.obtain(eventTime, eventTime, MotionEvent.ACTION_UP, x, y, 0)); |
| 186 | + return true; |
| 187 | + } |
| 188 | + return super.performAccessibilityAction(host, action, args); |
169 | 189 | } |
170 | 190 | }; |
171 | 191 |
|
|
0 commit comments