@ -15,7 +15,9 @@ import android.view.Display.FLAG_SECURE
import android.view.Gravity
import android.view.Gravity
import android.view.LayoutInflater
import android.view.LayoutInflater
import android.view.View
import android.view.View
import android.view.View.AccessibilityDelegate
import android.view.ViewGroup
import android.view.ViewGroup
import android.view.accessibility.AccessibilityEvent
import android.widget.Button
import android.widget.Button
import android.widget.LinearLayout
import android.widget.LinearLayout
import android.widget.PopupWindow
import android.widget.PopupWindow
@ -954,6 +956,43 @@ class HomeFragment : Fragment() {
border ?. animate ( ) ?. alpha ( 1.0F ) ?. setStartDelay ( ANIM _ON _SCREEN _DELAY )
border ?. animate ( ) ?. alpha ( 1.0F ) ?. setStartDelay ( ANIM _ON _SCREEN _DELAY )
?. setDuration ( FADE _ANIM _DURATION )
?. setDuration ( FADE _ANIM _DURATION )
?. setListener ( listener ) ?. start ( )
?. setListener ( listener ) ?. start ( )
} . invokeOnCompletion {
val a11yEnabled = context ?. settings ( ) ?. accessibilityServicesEnabled ?: false
if ( a11yEnabled ) {
focusCollectionForTalkBack ( indexOfCollection )
}
}
}
/ * *
* Will focus the collection with [ indexOfCollection ] for accessibility services .
* * /
private fun focusCollectionForTalkBack ( indexOfCollection : Int ) {
viewLifecycleOwner . lifecycleScope . launch {
var focusedForAccessibility = false
view ?. let { mainView ->
mainView . accessibilityDelegate = object : AccessibilityDelegate ( ) {
override fun onRequestSendAccessibilityEvent (
host : ViewGroup ,
child : View ,
event : AccessibilityEvent
) : Boolean {
if ( ! focusedForAccessibility &&
event . eventType == AccessibilityEvent . TYPE _VIEW _ACCESSIBILITY _FOCUSED
) {
sessionControlView ?. view ?. findViewHolderForAdapterPosition (
indexOfCollection
) ?. itemView ?. let { viewToFocus ->
focusedForAccessibility = true
viewToFocus . requestFocus ( )
viewToFocus . sendAccessibilityEvent ( AccessibilityEvent . TYPE _VIEW _FOCUSED )
return false
}
}
return super . onRequestSendAccessibilityEvent ( host , child , event )
}
}
}
}
}
}
}