/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 Ġk ores un iku Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . k ores un iku . wish master . ui . view . widget Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . support . design . widget . AppBar Layout Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Abs ListView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . om ada health . github . sw ipy refresh layout . library . Sw ipy Refresh Layout Ċ import Ġcom . om ada health . github . sw ipy refresh layout . library . Sw ipy Refresh Layout Direction Ċ import Ġjava . lang . ref . Weak Reference Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġk ores un iku Ġon Ġ 2 / 1 6 / 1 8 . Ċ Ġ*/ Ċ Ċ class ĠW ish master RecyclerView Ġ: ĠRecyclerView Ġ{ ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style ) ĊĊĠĠĠ Ġprivate Ġvar Ġm AppBar Layout : ĠApp Bar Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Sw ipy Refresh Layout : ĠSw ipy Refresh Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Activity Reference : ĠWeak Reference < Activity >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Actual AppBar Offset : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġfun Ġattach AppBar Layout ( app Bar Layout : ĠApp Bar Layout ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm AppBar Layout Ġ= Ġapp Bar Layout ĊĠĠĠĠĠĠĠ Ġm AppBar Layout ?. add On Offset Changed Listener Ġ{ Ġ_, Ġvertical Offset Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Actual AppBar Offset Ġ= Ġvertical Offset ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġattach Sw ipy Refresh Layout ( sw ipy Refresh Layout : ĠSw ipy Refresh Layout ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Sw ipy Refresh Layout Ġ= Ġsw ipy Refresh Layout ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġattach Activity ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Activity Reference Ġ= ĠWeak Reference ( activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Scroll Vert ically ( direction : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( direction Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= Ġsuper . can Scroll Vert ically ( direction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ! original Ġ&& Ġget Child At ( 0 ) Ġ!= Ġnull Ġ&& Ġget Child At ( 0 ). top Ġ< Ġ 0 Ġ|| Ġoriginal ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . can Scroll Vert ically ( direction ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Refresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( check Refresh Po ss ibility (). poss ibility ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW ish master RecyclerView . Refresh Po ss ibility . TOP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sw ipy Refresh Layout ?. direction Ġ= ĠSw ipy Refresh Layout Direction . TOP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sw ipy Refresh Layout ?. isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW ish master RecyclerView . Refresh Po ss ibility . BOTTOM Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sw ipy Refresh Layout ?. direction Ġ= ĠSw ipy Refresh Layout Direction . BOTTOM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sw ipy Refresh Layout ?. isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW ish master RecyclerView . Refresh Po ss ibility . BOTH Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sw ipy Refresh Layout ?. direction Ġ= ĠSw ipy Refresh Layout Direction . BOTH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sw ipy Refresh Layout ?. isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġm Sw ipy Refresh Layout ?. isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Refresh Po ss ibility (): ĠRefresh Po ss ibility Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( m AppBar Layout Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Refresh Po ss ibility Default () Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Refresh Po ss ibility Consider AppBar () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Refresh Po ss ibility Consider AppBar (): ĠRefresh Po ss ibility Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġready To Refresh Top : ĠBoolean Ġ= Ġ! can Scroll Vert ically (- 1 ) Ġ&& Ġm Actual AppBar Offset Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġready To Refresh Bottom : ĠBoolean Ġ= Ġ! can Scroll Vert ically ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠMath . abs ( m Actual AppBar Offset ) Ġ== Ġm AppBar Layout ?. height ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ready To Refresh Top Ġ&& Ġready To Refresh Bottom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRefresh Po ss ibility ( Refresh Po ss ibility . BOTH ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ready To Refresh Top ) Ġreturn ĠRefresh Po ss ibility ( Refresh Po ss ibility . TOP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ready To Refresh Bottom ) Ġreturn ĠRefresh Po ss ibility ( Refresh Po ss ibility . BOTTOM ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRefresh Po ss ibility ( Refresh Po ss ibility . NONE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Refresh Po ss ibility Default (): ĠRefresh Po ss ibility Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġready To Refresh Top : ĠBoolean Ġ= Ġ! can Scroll Vert ically (- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġready To Refresh Bottom : ĠBoolean Ġ= Ġ! can Scroll Vert ically ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ready To Refresh Top Ġ&& Ġready To Refresh Bottom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRefresh Po ss ibility ( Refresh Po ss ibility . BOTH ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ready To Refresh Top ) Ġreturn ĠRefresh Po ss ibility ( Refresh Po ss ibility . TOP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ready To Refresh Bottom ) Ġreturn ĠRefresh Po ss ibility ( Refresh Po ss ibility . BOTTOM ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRefresh Po ss ibility ( Refresh Po ss ibility . NONE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠRefresh Po ss ibility ( val Ġpossibility : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠNONE Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠTOP Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠBOTTOM Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠBOT H Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( dx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( dx , Ġdy ) ĊĠĠĠĠĠĠĠ Ġcheck Refresh () ĊĠĠĠ Ġ} Ċ }