/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠAll an ĠWang Ċ Ġ* Ċ Ġ* Ġ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 Ġca . all an wang . ka u . about Ċ Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . transition . Transition Inflater Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . view pager . widget . Pager Adapter Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġca . all an wang . ka u . about . databinding . K au Activity About Binding Ċ import Ġca . all an wang . ka u . adapters . Fast Item The med Adapter Ċ import Ġca . all an wang . ka u . adapters . The mable I Item Colors Ċ import Ġca . all an wang . ka u . adapters . The mable I Item Colors Delegate Ċ import Ġca . all an wang . ka u . internal . K au Base Activity Ċ import Ġca . all an wang . ka u . ui . widgets . Elastic Drag Dismiss Frame Layout Ċ import Ġca . all an wang . ka u . utils . Anim Holder Ċ import Ġca . all an wang . ka u . utils . INVALID _ ID Ċ import Ġca . all an wang . ka u . utils . dim en Pixel Size Ċ import Ġcom . mike pen z . about libraries . Lib s Ċ import Ġcom . mike pen z . about libraries . entity . Library Ċ import Ġcom . mike pen z . fast adapter . Generic Item Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAll an ĠWang Ġon Ġ 2 0 1 7 - 0 6 - 2 8 . Ċ Ġ* Ċ Ġ* ĠFloating ĠAbout ĠActivity ĠPanel Ġfor Ġyour Ġapp Ċ Ġ* ĠThis Ġcontains Ġall Ġthe Ġnecessary Ġlayouts , Ġand Ġcan Ġbe Ġextended Ġand Ġconfigured Ġusing Ġ[ build Configs ] Ċ Ġ* ĠThe Ġ[ r Class ] Ġis Ġnecessary Ġto Ġgenerate Ġthe Ġlist Ġof Ġlibraries Ġused Ġin Ġyour Ġapp , Ġand Ġshould Ġpoint Ġto Ġyour Ġapp 's Ċ Ġ* ĠR . string :: class . java Ċ Ġ* ĠIf Ġyou Ġdon 't Ġneed Ġauto Ġdetect , Ġyou Ġcan Ġpass Ġnull Ġinstead Ċ Ġ* ĠNote Ġthat Ġfor Ġthe Ġauto Ġdetection Ġto Ġwork , Ġthe ĠR Ġfields Ġmust Ġbe Ġexcluded Ġfrom ĠPro guard Ċ Ġ* ĠManual Ġlib Ġlist ings Ġand Ġother Ġextra Ġmodifications Ġcan Ġbe Ġdone Ġso Ġby Ġoverriding Ġthe Ġopen Ġfunctions Ċ Ġ*/ Ċ abstract Ġclass ĠAbout Activity Base ( val Ġr Class : ĠClass < *> ?) Ġ: ĊĠĠĠ ĠK au Base Activity (), ĠView Pager . On Page ChangeListener Ġ{ ĊĊĠĠĠ Ġval ĠcurrentPage : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbinding . about Pager . currentItem ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHold s Ġsome Ġcommon Ġconfigurations Ġthat Ġmay Ġbe Ġadded Ġdirectly Ġfrom Ġthe Ġconstructor ĊĠĠĠĠ Ġ* ĠApp lied Ġl az ily Ġsince Ġit Ġneeds Ġthe Ġcontext Ġto Ġfetch Ġresources ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġconfigs : ĠConfig s Ġby Ġlazy Ġ{ ĠConfig s (). apply Ġ{ Ġbuild Configs () Ġ} Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠConfig s . build Configs () Ġ= ĠUnit ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHold s Ġthat Ġstatus Ġof Ġeach Ġpage ĊĠĠĠĠ Ġ* Ġ 0 Ġmeans Ġnothing Ġhas Ġhappened ĊĠĠĠĠ Ġ* Ġ 1 Ġmeans Ġthis Ġpage Ġhas Ġbeen Ġin Ġview Ġat Ġleast Ġonce ĊĠĠĠĠ Ġ* ĠThe Ġrest Ġis Ġup Ġto Ġyou ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġpage Status : ĠInt Array ĊĊĠĠĠ Ġval Ġpanels : ĠList < About Panel Contract > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault Panels Ġ= Ġmutable ListOf ( About Panel Main (), ĠAbout Panel Lib s ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( configs . faq Xml Res Ġ!= ĠINVALID _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Panels . add ( About Panel Fa qs ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdefault Panels ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠK au Activity About Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠK au Activity About Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġbinding . init () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠK au Activity About Binding . init () Ġ{ ĊĠĠĠĠĠĠĠ Ġpage Status Ġ= ĠInt Array ( panels . size ) ĊĠĠĠĠĠĠĠ Ġpage Status [ 0 ] Ġ= Ġ 2 Ġ// Ġthe Ġfirst Ġpage Ġis Ġinstant ly Ġvisible ĊĠĠĠĠĠĠĠ Ġif Ġ( configs . textColor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabout Indicator . set Colour ( configs . textColor !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( about Pager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠAbout Pager Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Margin Ġ= Ġdim en Pixel Size ( R . dim en . ka u _ spacing _ normal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoff screen Page Limit Ġ= Ġpanels . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd On Page ChangeListener ( this @ About Activity Base ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġabout Indicator . set ViewPager ( about Pager ) ĊĠĠĠĠĠĠĠ Ġabout Drag gable Frame . addListener ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElastic Drag Dismiss Frame Layout . System Chrome F ader ( this @ About Activity Base ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Drag Dis missed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . return Transition Ġ= ĠTransition Inflater . from ( this @ About Activity Base ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate Transition ( if Ġ( about Drag gable Frame . translation Y Ġ> Ġ 0 ) ĠR . transition . ka u _ exit _ slide _ bottom Ġelse ĠR . transition . ka u _ exit _ slide _ top ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanels [ currentPage ]. recycler ?. stop Scroll () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish After Transition () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġpanels . forEach Indexed Ġ{ Ġindex , Ġcontract Ġ-> Ġcontract . load Items ( this @ About Activity Base , Ġindex ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠConfig s Ġ: ĠThe mable I Item Colors Ġby ĠThe mable I Item Colors Delegate () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcut out Text Res : ĠInt Ġ= ĠINVALID _ ID ĊĠĠĠĠĠĠĠ Ġvar Ġcut out Text : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġcut out Drawable Res : ĠInt Ġ= ĠINVALID _ ID ĊĠĠĠĠĠĠĠ Ġvar Ġcut out Drawable : ĠDrawable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġcut out Foreground : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġlib Page Title Res : ĠInt Ġ= ĠR . string . ka u _ about _ libraries _ intro ĊĠĠĠĠĠĠĠ Ġvar Ġlib Page Title : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlib Page Title Res Ġ= ĠINVALID _ ID Ġ// Ġreset Ġres Ġso Ġwe Ġdon 't Ġuse Ġour Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġfa q Xml Res : ĠInt Ġ= ĠINVALID _ ID ĊĠĠĠĠĠĠĠ Ġvar Ġfa q Page Title Res : ĠInt Ġ= ĠR . string . ka u _ about _ faq _ intro ĊĠĠĠĠĠĠĠ Ġvar Ġfa q Page Title : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfa q Page Title Res Ġ= ĠINVALID _ ID Ġ// Ġreset Ġres Ġso Ġwe Ġdon 't Ġuse Ġour Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhether Ġnew Ġlines Ġshould Ġbe Ġincluded ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġfa q Parse NewLine : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFor Ġ[ main Panel ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOpen Ġhook Ġcalled Ġjust Ġbefore Ġthe Ġmain Ġpage Ġview Ġis Ġreturned ĊĠĠĠĠ Ġ* ĠFeel Ġfree Ġto Ġadd Ġyour Ġown Ġitems Ġto Ġthe Ġadapter Ġin Ġhere ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġpost Inf late Main Page ( adapter : ĠFast Item The med Adapter < Generic Item >) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFor Ġ[ lib Panel ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠMethod Ġto Ġfetch Ġthe Ġlibrary Ġlist ĊĠĠĠĠ Ġ* ĠThis Ġis Ġfetched Ġasynchronously Ġand Ġyou Ġmay Ġoverride Ġit Ġto Ġcustomize Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġget Libraries ( libs : ĠLib s ): ĠList < Library > Ġ= ĊĠĠĠĠĠĠĠ Ġlibs . prepare Libraries ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Libraries Ġ= Ġempty Array (), Ġ// ĠTODO Ġremove Ġparameter Ġdeclarations ; Ġhttps :// github . com / mike pen z / About Libraries / issues / 4 4 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Libraries Ġ= Ġempty Array (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Detect Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Cached Detection Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* Ġ---------------------------------------------------------------- --- ĊĠĠĠĠ Ġ* ĠPage Ġ 3 : ĠFAQ ĊĠĠĠĠ Ġ* Ġ---------------------------------------------------------------- --- ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠAbout Pager Adapter Ġ: ĠP ager Adapter () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlayout Inflater : ĠLayoutInflater Ġ= ĠLayoutInflater . from ( this @ About Activity Base ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġviews Ġ= ĠArray < View ? >( panels . size ) Ġ{ Ġnull Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinstantiate Item ( collection : ĠViewGroup , Ġposition : ĠInt ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= Ġget Page ( position , Ġcollection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . addView ( layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlayout ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdestroy Item ( collection : ĠViewGroup , Ġposition : ĠInt , Ġview : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . remove View ( view Ġas ĠView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġviews [ position ] Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ= Ġpanels . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis View From Object ( view : ĠView , Ġ` object `: ĠAny ): ĠBoolean Ġ= Ġview Ġ=== Ġ` object ` ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOnly Ġget Ġpage Ġif Ġview Ġdoes Ġnot Ġexist ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Page ( position : ĠInt , Ġparent : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( views [ position ] Ġ== Ġnull ) Ġviews [ position ] Ġ= Ġpanels [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate Page ( this @ About Activity Base , Ġparent , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġviews [ position ] !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ= ĠUnit ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ ĠUnit ĊĊĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( page Status [ position ] Ġ== Ġ 0 ) Ġpage Status [ position ] Ġ= Ġ 1 Ġ// Ġmark Ġas Ġseen Ġif Ġpreviously Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( page Status [ position ] Ġ== Ġ 1 ) Ġpanels [ position ]. add Items ( this , Ġposition ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠAnim Holder . de cel erate Interpolator . invalidate () Ġ// Ġclear Ġthe Ġreference Ġto Ġthe Ġinterpol ators Ġwe 've Ġused ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} Ċ } Ċ