package Ġcom . my ether wallet . me w connect . feature . main . view . behavior Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . coordinator layout . widget . Coordinator Layout Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . my ether wallet . me w connect . feature . main . utils . Wallet S izing Utils Ċ import Ġcom . my ether wallet . me w connect . feature . main . view . Wallet Scroll able Ċ import Ġcom . my ether wallet . me w connect . feature . register . utils . Scroll Watcher ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠB Art Well Ġon Ġ 1 7 . 0 8 . 2 0 1 8 . Ċ Ġ*/ Ċ Ċ private Ġconst Ġval ĠEX TRA _ SCROLL Ġ= Ġ" scroll " Ċ Ċ class ĠWallet Scroll Behavior ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġprivate Ġval Ġscroll Watcher : ĠScroll Watcher ) Ġ: ĠCoord inator Layout . Behavior < Frame Layout >( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġscroll Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġscroll Threshold Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġviews Ġ= Ġmutable ListOf < Wallet Scroll able >() ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Dep ends On ( parent : ĠCoord inator Layout , Ġchild : ĠFrame Layout , Ġdependency : ĠView ) Ġ= Ġdependency Ġis ĠRecyclerView ĊĊĠĠĠ Ġoverride Ġfun Ġon Dependent View Changed ( parent : ĠCoord inator Layout , Ġchild : ĠFrame Layout , Ġdependency : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dependency Ġis ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Watcher . scroll Position Listener Ġ= Ġ{ Ġnotify Views () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġchild . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġis ĠWallet Scroll able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġviews . add ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Views () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Dependent View Changed ( parent , Ġchild , Ġdependency ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout Child ( parent : ĠCoord inator Layout , Ġchild : ĠFrame Layout , Ġlayout Direction : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( scroll Threshold Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscroll Threshold Ġ= ĠWallet S izing Utils . calculate Scroll Threshold ( parent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsuper . on Layout Child ( parent , Ġchild , Ġlayout Direction ) ĊĠĠĠĠĠĠĠ Ġnotify Views () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( parent : ĠCoord inator Layout , Ġchild : ĠFrame Layout ): ĠParcel able ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġbundle . put Int ( EXTRA _ SCROLL , Ġscroll ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbundle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Restore InstanceState ( parent : ĠCoord inator Layout , Ġchild : ĠFrame Layout , Ġstate : ĠParcel able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( parent , Ġchild , Ġstate ) ĊĠĠĠĠĠĠĠ Ġscroll Ġ= Ġ( state Ġas ĠBundle ). getInt ( EXTRA _ SCROLL ) ĊĠĠĠĠĠĠĠ Ġnotify Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( views . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġratio Ġ= Ġ 1 Ġ- Ġscroll Watcher . scroll Position Ġ/ Ġscroll Threshold . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ratio Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġratio Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( view Ġin Ġviews ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . set Ratio ( ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ