Skip to content

Commit c6f71b5

Browse files
Fixed build
1 parent 194aca4 commit c6f71b5

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

TouchEffect.Droid/PlatformTouchEff.cs

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
using Android.Content;
1818
using AndroidOS = Android.OS;
1919
using System.ComponentModel;
20+
using Java.Interop;
2021

2122
[assembly: ResolutionGroupName(nameof(TouchEffect))]
2223
[assembly: ExportEffect(typeof(PlatformTouchEff), nameof(TouchEff))]
@@ -28,6 +29,7 @@ public class PlatformTouchEff : PlatformEffect
2829
public static void Preserve() { }
2930

3031
private AccessibilityManager _accessibilityManager;
32+
private AccessibilityListener _accessibilityListener;
3133
private TouchEff _effect;
3234
private bool _isHoverSupported;
3335
private RippleDrawable _ripple;
@@ -63,8 +65,9 @@ protected override void OnAttached()
6365
_accessibilityManager = View.Context.GetSystemService(Context.AccessibilityService) as AccessibilityManager;
6466
if (_accessibilityManager != null)
6567
{
66-
_accessibilityManager.AccessibilityStateChange += OnAccessibilityStateChange; ;
67-
_accessibilityManager.TouchExplorationStateChange += OnTouchExplorationStateChange; ;
68+
_accessibilityListener = new AccessibilityListener(this);
69+
_accessibilityManager.AddAccessibilityStateChangeListener(_accessibilityListener);
70+
_accessibilityManager.AddTouchExplorationStateChangeListener(_accessibilityListener);
6871
}
6972

7073
if (_effect.NativeAnimation && Group != null && AndroidOS.Build.VERSION.SdkInt >= AndroidOS.BuildVersionCodes.Lollipop)
@@ -93,8 +96,10 @@ protected override void OnDetached()
9396
{
9497
if (_accessibilityManager != null)
9598
{
96-
_accessibilityManager.AccessibilityStateChange -= OnAccessibilityStateChange;
97-
_accessibilityManager.TouchExplorationStateChange -= OnTouchExplorationStateChange;
99+
_accessibilityManager.RemoveAccessibilityStateChangeListener(_accessibilityListener);
100+
_accessibilityManager.RemoveTouchExplorationStateChangeListener(_accessibilityListener);
101+
_accessibilityListener.Dispose();
102+
_accessibilityManager = null;
98103
_accessibilityManager = null;
99104
}
100105

@@ -138,12 +143,6 @@ protected override void OnElementPropertyChanged(PropertyChangedEventArgs args)
138143
}
139144
}
140145

141-
private void OnTouchExplorationStateChange(object sender, AccessibilityManager.TouchExplorationStateChangeEventArgs e)
142-
=> UpdateClickHandler();
143-
144-
private void OnAccessibilityStateChange(object sender, AccessibilityManager.AccessibilityStateChangeEventArgs e)
145-
=> UpdateClickHandler();
146-
147146
private void UpdateClickHandler()
148147
{
149148
View.Click -= OnClick;
@@ -336,5 +335,21 @@ private void LayoutChange(object sender, AView.LayoutChangeEventArgs e)
336335
_viewOverlay.Right = group.Width;
337336
_viewOverlay.Bottom = group.Height;
338337
}
338+
339+
private sealed class AccessibilityListener : Java.Lang.Object,
340+
AccessibilityManager.IAccessibilityStateChangeListener,
341+
AccessibilityManager.ITouchExplorationStateChangeListener
342+
{
343+
private readonly PlatformTouchEff _platformTouchEff;
344+
345+
internal AccessibilityListener(PlatformTouchEff platformTouchEff)
346+
=> _platformTouchEff = platformTouchEff;
347+
348+
public void OnAccessibilityStateChanged(bool enabled)
349+
=> _platformTouchEff.UpdateClickHandler();
350+
351+
public void OnTouchExplorationStateChanged(bool enabled)
352+
=> _platformTouchEff.UpdateClickHandler();
353+
}
339354
}
340355
}

TouchEffect.Droid/TouchEffect.Droid.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
<Reference Include="Xamarin.Android.Arch.Core.Common">
4646
<HintPath>..\packages\Xamarin.Android.Arch.Core.Common.1.1.1.3\lib\monoandroid90\Xamarin.Android.Arch.Core.Common.dll</HintPath>
4747
</Reference>
48-
<Reference Include="Java.Interop" />
4948
<Reference Include="Xamarin.Android.Arch.Lifecycle.Common">
5049
<HintPath>..\packages\Xamarin.Android.Arch.Lifecycle.Common.1.1.1.3\lib\monoandroid90\Xamarin.Android.Arch.Lifecycle.Common.dll</HintPath>
5150
</Reference>

0 commit comments

Comments
 (0)