package Ġcom . github . sig ute . accessibility demo Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Image Button Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . Accessibility Delegate Compat Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . core . view . accessibility . Accessibility NodeInfo Compat Ċ import Ġkotlinx . android . synt hetic . main . activity _ state _ changes . favorite _ button _ custom Ċ import Ġkotlinx . android . synt hetic . main . activity _ state _ changes . favorite _ button _ default Ċ Ċ class ĠState Changes Activity Ġ: ĠAppCompatActivity ( R . layout . activity _ state _ changes ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdefault Selected Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġcustom Selected Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġfavorite _ button _ default . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Selected Ġ= Ġ! default Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Drawable ( favorite _ button _ default , Ġdefault Selected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// initial Ġsetup ĊĠĠĠĠĠĠĠ ĠsetUp Custom Button Accessibility () ĊĠĠĠĠĠĠĠ Ġfavorite _ button _ custom . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Selected Ġ= Ġ! custom Selected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Drawable ( favorite _ button _ custom , Ġcustom Selected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// updated Ġafter Ġuser Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetUp Custom Button Accessibility () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Custom Button Accessibility () Ġ{ ĊĠĠĠĠĠĠĠ Ġfavorite _ button _ custom . content Description Ġ= ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( custom Selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . content _ description _ favorite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . content _ description _ not _ favorite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠView Compat . set Accessibility Delegate ( favorite _ button _ custom , Ġobject Ġ: ĠAccessibility Delegate Compat () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Initialize Accessibility NodeInfo ( v : ĠView , Ġinfo : ĠAccessibility NodeInfo Compat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Initialize Accessibility NodeInfo ( v , Ġinfo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclick Action Ġ= ĠAccessibility NodeInfo Compat . Accessibility Action Compat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccessibility NodeInfo Compat . ACTION _ CLICK , ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( custom Selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . content _ description _ action _ remove _ from _ favorites ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . content _ description _ action _ favorite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . addAction ( click Action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Drawable ( image Button : ĠImage Button , Ġselected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġimage Button . setImage Drawable ( Context Compat . get Drawable ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ favorite _ black _ 2 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ favorite _ border _ black _ 2 4 dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ