/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠSK ĠTele com ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ġ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 . sk t . n ugu . sdk . platform . android . ux . widget Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Port er D uff Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . support . v 4 . view . View Compat Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroid . view . Abs Saved State Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . sk t . n ugu . sdk . platform . android . ux . R Ċ Ċ /** Ċ Ġ* ĠA ĠNU GU Ġfloating Ġaction Ġbutton Ġ( FAB ) Ġis Ġa Ġcircular Ġbutton Ġdesigned Ġby ĠN ugu ĠDesign Ġguide . Ċ Ġ* Ġ@ constructor ĠCreates Ċ Ġ* Ġ@ param Ġcontext ĠThe ĠContext Ċ Ġ* Ġ@ param Ġattrs ĠStyle Ġattributes Ġthat Ġdiffer Ġfrom Ġthe Ġdefault Ċ Ġ* Ġ@ param Ġdef Style Attr ĠAn Ġattribute Ġin Ġthe Ġcurrent Ġtheme Ġthat Ġcontains Ġa Ċ Ġ* ĠĠĠĠĠĠĠ Ġreference Ġto Ġa Ġstyle Ġresource Ġthat Ġsupp lies Ġdefault Ġvalues Ġfor Ċ Ġ* ĠĠĠĠĠĠĠ Ġthe Ġview . ĠCan Ġbe Ġ 0 Ġto Ġnot Ġlook Ġfor Ġdefaults . Ċ Ġ* Ċ Ġ* Ġ@ attr Ġref ĠR . style able # N ugu Floating ActionButton _ fab _ mic Standard Drawable Ċ Ġ* Ġ@ attr Ġref ĠR . style able # N ugu Floating ActionButton _ fab _ n ugu Standard Drawable Ċ Ġ* Ġ@ attr Ġref ĠR . style able # N ugu Floating ActionButton _ fab _ mic Large Drawable Ċ Ġ* Ġ@ attr Ġref ĠR . style able # N ugu Floating ActionButton _ fab _ n ugu Large Drawable Ċ Ġ* Ġ@ attr Ġref ĠR . style able # N ugu Floating ActionButton _ fab _ duration Ċ Ġ* Ġ@ attr Ġref ĠR . style able # N ugu Floating ActionButton _ fab _ color Ċ Ġ* Ġ@ attr Ġref ĠR . style able # N ugu Floating ActionButton _ fab _ border Color Ċ Ġ* Ġ@ attr Ġref ĠR . style able # N ugu Floating ActionButton _ fab _ sizes Ċ Ġ*/ Ċ Ċ @ Deprecated (" Use ĠN ugu Button ") Ċ class ĠN ugu Floating ActionButton Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠFrame Layout ( context , Ġattrs , Ġdef Style Attr ) Ġ{ ĊĠĠĠ Ġ/** Ġstandard Ġsize Ġ*/ ĊĠĠĠ Ġval ĠSIZE _ STANDARD Ġ= Ġ 0 ĊĠĠĠ Ġ/** Ġlarge Ġsize Ġ*/ ĊĠĠĠ Ġval ĠSIZE _ LARGE Ġ= Ġ 1 ĊĊĠĠĠ Ġprivate Ġvar ĠimageView : ĠSparse Array < ImageView > Ġ= ĠSparse Array () ĊĠĠĠ Ġprivate Ġvar Ġdraw ables : ĠSparse Array < Drawable > Ġ= ĠSparse Array () ĊĊĠĠĠ Ġ// Ġattributes ĊĠĠĠ Ġprivate Ġvar Ġfab Color : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġfab BorderColor : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġfab Size : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġduration : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġauto Play Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġloop Play Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġwas Anim ating When Detached Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġwas Anim ating When Not Shown Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġrunning Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Initialized : ĠBoolean Ġ= Ġfalse ĊĊĊĠĠĠ Ġprivate Ġvar Ġanim ator Ġ: ĠObject Animator Ġ?= Ġnull ĊĊĠĠĠ Ġprivate Ġval ĠVIEW _ MIC Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval ĠVIEW _ NU GU Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval ĠVIEW _ FLAGS Ġ= Ġint ArrayOf ( VIEW _ MIC , ĠVIEW _ NU GU ) ĊĊĠĠĠ Ġprivate Ġval ĠIMAGE _ STANDARD _ MIC Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval ĠIMAGE _ STANDARD _ NU GU Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval ĠIMAGE _ LARGE _ MIC Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġval ĠIMAGE _ LARGE _ NU GU Ġ= Ġ 3 ĊĠĠĠ Ġprivate Ġval ĠIMAGE _ FLAGS Ġ= Ġint ArrayOf ( IMAGE _ STANDARD _ MIC , ĠIMAGE _ STANDARD _ NU GU , ĠIMAGE _ LARGE _ MIC , ĠIMAGE _ LARGE _ NU GU ) ĊĊĊĠĠĠ Ġprivate Ġfun Ġis Anim ating (): ĠBoolean Ġ= Ġrunning ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit ( attrs ) ĊĠĠĠĠĠĠĠ Ġsetup View () ĊĠĠĠĠĠĠĠ Ġsetup Background () ĊĠĠĠĠĠĠĠ Ġsize Change () ĊĠĠĠĠĠĠĠ Ġsetup Animations () ĊĠĠĠĠĠĠĠ Ġis Initialized Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/** ĠGray Ġcolor Ġ**/ ĊĠĠĠ Ġvar ĠGR AY Ġ= Ġ- 0 x 8 7 7 c 7 1 ĊĠĠĠ Ġ// Ġinitialize Ġcustom Ġattributes ĊĠĠĠ Ġprivate Ġfun Ġinit ( attrs : ĠAttributeSet ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĠR . style able . N ugu Floating ActionButton , Ġ 0 , Ġ 0 ĊĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw ables . put ( IMAGE _ STANDARD _ MIC , Ġget Drawable ( R . style able . N ugu Floating ActionButton _ fab _ mic Standard Drawable )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw ables . put ( IMAGE _ STANDARD _ NU GU , Ġget Drawable ( R . style able . N ugu Floating ActionButton _ fab _ n ugu Standard Drawable )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw ables . put ( IMAGE _ LARGE _ MIC , Ġget Drawable ( R . style able . N ugu Floating ActionButton _ fab _ mic Large Drawable )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw ables . put ( IMAGE _ LARGE _ NU GU , Ġget Drawable ( R . style able . N ugu Floating ActionButton _ fab _ n ugu Large Drawable )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġget Integer ( R . style able . N ugu Floating ActionButton _ fab _ duration , Ġ 1 0 0 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Color Ġ= Ġget Color ( R . style able . N ugu Floating ActionButton _ fab _ color , ĠGR AY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab BorderColor Ġ= Ġget Color ( R . style able . N ugu Floating ActionButton _ fab _ border Color , Ġ 0 x 0 C 0 0 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Size Ġ= Ġget Int ( R . style able . N ugu Floating ActionButton _ fab _ sizes , ĠSIZE _ STANDARD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfor Ġshadow ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . set Elevation ( this @ N ugu Floating ActionButton , Ġget Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . N ugu Floating ActionButton _ fab _ elevation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . fab _ elevation ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloop Play Ġ= Ġget Boolean ( R . style able . N ugu Floating ActionButton _ fab _ loop , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Play Ġ= Ġget Boolean ( R . style able . N ugu Floating ActionButton _ fab _ auto Play , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ}. recycle () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinvoked Ġwhen Ġthe Ġactivity Ġmay Ġbe Ġtemporarily Ġdestroyed , Ġsave Ġthe Ġinstance Ġstate Ġhere ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState (): ĠParcel able ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSaved State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState () Ġ?: ĠBundle . EMPTY , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Color , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab BorderColor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Play , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloop Play , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrunning ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġcallback Ġis Ġcalled Ġonly Ġwhen Ġthere Ġis Ġa Ġsaved Ġinstance Ġthat Ġis Ġpreviously Ġsaved Ġby Ġusing ĊĠĠĠĠ Ġ* Ġon Save InstanceState (). ĠWe Ġrestore Ġsome Ġstate Ġin ĠonCreate (), Ġwhile Ġwe Ġcan Ġoptionally Ġrestore ĊĠĠĠĠ Ġ* Ġother Ġstate Ġhere , Ġpossibly Ġusable Ġafter ĠonStart () Ġhas Ġcompleted . ĊĠĠĠĠ Ġ* ĠThe ĠsavedInstanceState ĠBundle Ġis Ġsame Ġas Ġthe Ġone Ġused Ġin ĠonCreate (). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Restore InstanceState ( state : ĠParcel able ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( state ) ĊĊĠĠĠĠĠĠĠ Ġval Ġss Ġ= Ġstate Ġas ĠSaved State ĊĠĠĠĠĠĠĠ Ġfab Color Ġ= Ġss . fab Color ĊĠĠĠĠĠĠĠ Ġfab BorderColor Ġ= Ġss . fab BorderColor ĊĠĠĠĠĠĠĠ Ġfab Size Ġ= Ġss . fab Size ĊĠĠĠĠĠĠĠ Ġauto Play Ġ= Ġss . auto Play ĊĠĠĠĠĠĠĠ Ġloop Play Ġ= Ġss . loop Play ĊĠĠĠĠĠĠĠ Ġduration Ġ= Ġss . duration ĊĠĠĠĠĠĠĠ Ġrunning Ġ= Ġss . running ĊĊĠĠĠĠĠĠĠ Ġif Ġ( running Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Animation () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġstate Ġof Ġpressed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Pressed State ( pressed Color : ĠInt ): ĠColor State List Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠColor State List ( array Of ( int ArrayOf ()), Ġint ArrayOf ( pressed Color )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġbackground Ġcolor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Background () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Creating Ġgradient Ġdrawable Ġfrom Ġprogram matically ĊĠĠĠĠĠĠĠ Ġbackground Ġ= ĠGradient Drawable (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Stroke ( 1 0 , Ġfab BorderColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= ĠGradient Drawable . O VAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Color ( fab Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Color ( GRAY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġa Ġtouch Ġscreen Ġmotion Ġevent Ġoccurs . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground . setColor Filter ( 0 x 2 8 0 0 0 0 0 0 , ĠPort er D uff . Mode . SRC _ AT OP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground . clear Color Filter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Touch Event ( event ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitializes , ĠCreates Ġa Ġview ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup View () Ġ{ ĊĠĠĠĠĠĠĠ Ġremove All Views () ĊĠĠĠĠĠĠĠ Ġremove All Views In Layout () ĊĠĠĠĠĠĠĠ Ġ// ĠAdd ĠBase ĠLayout ĊĠĠĠĠĠĠĠ Ġval Ġbase Layout Ġ= ĠLinearLayout ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠLinearLayout . VERTICAL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġgravity Ġ= ĠGr avity . CENTER Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠAdd ĠMIC ĠImageView ĊĠĠĠĠĠĠĠ ĠimageView . put ( VIEW _ MIC , ĠImageView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ Ġgravity Ġ= ĠGr avity . CENTER _ HORIZONTAL Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbase Layout . addView ( imageView [ VIEW _ MIC ]) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd ĠNU GU ĠImageView ĊĠĠĠĠĠĠĠ ĠimageView . put ( VIEW _ NU GU , ĠImageView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayout . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ Ġgravity Ġ= ĠGr avity . CENTER _ HORIZONTAL Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbase Layout . addView ( imageView [ VIEW _ NU GU ]) ĊĊĠĠĠĠĠĠĠ Ġadd View ( base Layout ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġvisibility Ġstate Ġof Ġthis Ġview . ĊĠĠĠĠ Ġ* Ġ@ param Ġvisibility Ġis Ġ[ View . VISIBLE ], Ġ[ View . IN VISIBLE ], Ġ[ View . GONE ] ĊĠĠĠĠ Ġ* Ġ@ param Ġindex Ġis ĠVIEW _ MIC , ĠVIEW _ NU GU ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġvisibility ( visibility : ĠInt , Ġindex : ĠInt Ġ= ĠVIEW _ NU GU ) Ġ{ ĊĠĠĠĠĠĠĠ ĠimageView . get ( index )?. visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠ Ġsize Change () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġanimation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Animations () Ġ{ ĊĠĠĠĠĠĠĠ Ġanim ator Ġ= ĠObject Animator . of Float ( imageView . get ( VIEW _ MIC ), Ġ" rotation Y ", Ġ 0 F , Ġ 1 8 0 f ) ĊĠĠĠĠĠĠĠ Ġanim ator ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . duration Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . start Delay Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . addListener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( loop Play ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation ?. start Delay Ġ= Ġ 5 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation ?. start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġenabled Ġstate Ġof Ġthis Ġview . ĊĠĠĠĠ Ġ* Ġ@ param Ġenabled ĠTrue Ġif Ġthis Ġview Ġis Ġenabled , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġset Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setEnabled ( enabled ) ĊĠĠĠĠĠĠĠ Ġsetup Background () ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( auto Play ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresume Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Animation () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġvisibility Ġof Ġthe Ġview Ġor Ġan Ġancestor Ġof Ġthe Ġview Ġhas Ġchanged . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Visibility Changed ( changed View : ĠView , Ġvisibility : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Visibility Changed ( changed View , Ġvisibility ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( was Anim ating When Not Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresume Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwas Anim ating When Not Shown Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Anim ating ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpause Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwas Anim ating When Not Shown Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġcalled Ġwhen Ġthe Ġview Ġis Ġattached Ġto Ġa Ġwindow . ĊĠĠĠĠ Ġ**/ ĊĠĠĠ Ġoverride Ġfun Ġon Attached To Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attached To Window () ĊĠĠĠĠĠĠĠ Ġif Ġ( auto Play Ġ|| Ġwas Anim ating When Detached ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Animation () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġneeded Ġto Ġm imic Ġnewer Ġplatform Ġbehavior . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// stackoverflow . com / a / 5 3 6 2 5 8 6 0 / 7 1 5 6 3 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Visibility Changed ( this , Ġvisibility ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsize Change () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġcalled Ġwhen Ġthe Ġview Ġis Ġdet ached Ġfrom Ġa Ġwindow . Ġ ĠAt Ġthis Ġpoint Ġit ĊĠĠĠĠ Ġ* Ġno Ġlonger Ġhas Ġa Ġsurface Ġfor Ġdrawing . ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ on Attached To Window ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Anim ating ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwas Anim ating When Detached Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIt Ġshould Ġbe Ġcalled Ġwhen Ġthe Ġlayout Ġof Ġthe Ġview Ġchanges . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsize Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( fab Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSIZE _ STANDARD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . width Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ size _ standard ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . height Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ size _ standard ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . get ( VIEW _ MIC )?. layout Params Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . fab _ mic _ size _ standard ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . fab _ mic _ size _ standard ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ mic _ bottom _ margin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . get ( VIEW _ NU GU )?. layout Params Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . fab _ n ugu _ width _ standard ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . fab _ n ugu _ height _ standard ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ n ugu _ top _ margin _ standard ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ n ugu _ bottom _ margin _ standard ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . get ( VIEW _ MIC ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( draw ables . get ( IMAGE _ STANDARD _ MIC )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . get ( VIEW _ NU GU ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( draw ables . get ( IMAGE _ STANDARD _ NU GU )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSIZE _ LARGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . width Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ size _ large ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . height Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ size _ large ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . get ( VIEW _ MIC )?. layout Params Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . fab _ mic _ size _ large ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . fab _ mic _ size _ large ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ mic _ bottom _ margin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . get ( VIEW _ NU GU )?. layout Params Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . fab _ mic _ size _ large ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Dimension Pixel Size ( R . dim en . fab _ n ugu _ size _ large ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ n ugu _ top _ margin _ large ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Margin Ġ= Ġresources . get Dimension Pixel Size ( R . dim en . fab _ n ugu _ bottom _ margin _ large ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . get ( VIEW _ MIC ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( draw ables . get ( IMAGE _ LARGE _ MIC )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . get ( VIEW _ NU GU ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Drawable ( draw ables . get ( IMAGE _ LARGE _ NU GU )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġno Ġop ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStart Ġthe Ġanimation Ġplaying ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġplay Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( is Shown Ġ&& Ġis Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( anim ator Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Animations () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator ?. start Delay Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator ?. start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrunning Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwas Anim ating When Not Shown Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠResume Ġthe Ġanimation Ġplaying ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġresume Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġplay Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPause Ġthe Ġanimation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpause Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġanim ator ?. pause () ĊĠĠĠĠĠĠĠ Ġrunning Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStop ( Cancel s ) Ġthe Ġanimation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstop Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġrunning Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġwas Anim ating When Detached Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġwas Anim ating When Not Shown Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġanim ator ?. removeAll Listeners () ĊĠĠĠĠĠĠĠ Ġanim ator ?. end () ĊĠĠĠĠĠĠĠ Ġanim ator ?. cancel () ĊĠĠĠĠĠĠĠ Ġanim ator Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChange Ġthe Ġsize ĊĠĠĠĠ Ġ* Ġ@ param Ġsize ĠSIZE _ STANDARD , ĠSIZE _ LARGE ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġset Size ( size : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fab Size Ġ== Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfab Size Ġ= Ġsize ĊĠĠĠĠĠĠĠ Ġsize Change () ĊĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġpost Delayed ( Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠ Ġ}, Ġ 1 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSaved State Ġimplementation Ġ*/ ĊĠĠĠ Ġinternal Ġclass ĠSaved State : ĠAbs Saved State Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfab Color : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġfab BorderColor : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġfab Size : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġauto Play : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġloop Play : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġduration : ĠLong Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġvar Ġrunning : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġconstructor ( source : ĠParcel ) Ġ: Ġsuper ( source ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Color Ġ= Ġsource . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab BorderColor Ġ= Ġsource . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Size Ġ= Ġsource . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Play Ġ= Ġsource . readInt () Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloop Play Ġ= Ġsource . readInt () Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġsource . read Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrunning Ġ= Ġsource . readInt () Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper State : ĠParcel able , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Color : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab BorderColor : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab Size : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Play : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloop Play : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrunning : Boolean ĊĠĠĠĠĠĠĠ Ġ) Ġ: Ġsuper ( super State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fab Color Ġ= Ġfab Color ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fab BorderColor Ġ= Ġfab BorderColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fab Size Ġ= Ġfab Size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . auto Play Ġ= Ġauto Play ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . loop Play Ġ= Ġloop Play ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . duration Ġ= Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . running Ġ= Ġrunning ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠwriteTo Parcel ( out : ĠParcel , Ġflags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . writeTo Parcel ( out , Ġflags ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . writeInt ( fab Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . writeInt ( fab BorderColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . writeInt ( fab Size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . writeInt ( if Ġ( auto Play ) Ġ 1 Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . writeInt ( if Ġ( loop Play ) Ġ 1 Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . write Long ( duration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . writeInt ( if Ġ( running ) Ġ 1 Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠCRE ATOR : ĠParcel able . Creator < Saved State > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠParcel able . ClassLoader Creator < Saved State > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel ( source : ĠParcel ): ĠSaved State Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSaved State ( source ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel ( source : ĠParcel , Ġloader : ĠClassLoader ): ĠSaved State Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSaved State ( source ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ): ĠArray < Saved State ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf Null s ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }