/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . example . android . databinding . tw ow ays ample . ui Ċ Ċ import Ġandroid . animation . Argb Evaluator Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . databinding . Binding Adapter Ċ import Ġandroid . support . constraint . Constraint Layout Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . De cel erate Interpolator Ċ import Ġcom . example . android . databinding . tw ow ays ample . R Ċ Ċ /** Ċ Ġ* ĠA Ġcollection Ġof Ġ[ Binding Adapter ] s Ġused Ġto Ġcreate Ġanimations Ġin Ġthe Ġapp Ċ Ġ*/ Ċ object ĠAnimation Binding Adapters Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠV ERT ICAL _ BI AS _ ANIM ATION _ DURATION Ġ= Ġ 9 0 0 L ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠBG _ COLOR _ ANIM ATION _ DURATION Ġ= Ġ 5 0 0 L ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠControls Ġa Ġbackground Ġcolor Ġanimation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġview Ġone Ġof Ġthe Ġtimers Ġ( work / rest ) ĊĠĠĠĠ Ġ* Ġ@ param Ġtimer Running Ġwhether Ġthe Ġapp Ġtimer Ġis Ġrunning ĊĠĠĠĠ Ġ* Ġ@ param Ġactive Stage Ġwhether Ġthis Ġparticular Ġtimer Ġ( work / rest ) Ġis Ġactive ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Binding Adapter ( value =[" animate Background ", Ġ" animate Background Stage "], Ġrequire All Ġ= Ġtrue ) ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġanimate Background ( view : ĠView , Ġtimer Running : ĠBoolean , Ġactive Stage : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġtimer Ġis Ġnot Ġrunning , Ġdon 't Ġanimate Ġand Ġset Ġthe Ġdefault Ġcolor . ĊĠĠĠĠĠĠĠ Ġif Ġ(! timer Running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . set BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( view . context , ĠR . color . disabled Input Color )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġtag Ġprevents Ġa Ġgl itch Ġgoing Ġfrom Ġreset Ġto Ġstarted . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setTag ( R . id . has Been Animated , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġactive Stage Ġcontrols Ġwhether Ġthis Ġparticular Ġtimer Ġ( work Ġor Ġrest ) Ġis Ġactive . ĊĠĠĠĠĠĠĠ Ġif Ġ( active Stage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStart Ġanimation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Bg Color ( view , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġtag Ġprevents Ġa Ġgl itch Ġgoing Ġfrom Ġpaused Ġto Ġstarted . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setTag ( R . id . has Been Animated , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPrevent Ġ" end " Ġanimation Ġif Ġanimation Ġnever Ġstarted ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas It Been Animated Ġ= Ġview . getTag ( R . id . has Been Animated ) Ġas ĠBoolean ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has It Been Animated Ġ== Ġtrue ) Ġ{ Ġ Ġ// Ġthis Ġmeans Ġfalse Ġif Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEnd Ġanimation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimate Bg Color ( view , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setTag ( R . id . has Been Animated , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠControls Ġan Ġanimation Ġthat Ġmoves Ġa Ġview Ġup Ġand Ġdown . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġview Ġone Ġof Ġthe Ġtimers Ġ( work / rest ) ĊĠĠĠĠ Ġ* Ġ@ param Ġtimer Running Ġwhether Ġthe Ġapp Ġtimer Ġis Ġrunning ĊĠĠĠĠ Ġ* Ġ@ param Ġactive Stage Ġwhether Ġthis Ġparticular Ġtimer Ġ( work / rest ) Ġis Ġactive ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Binding Adapter ( value =[" animate Vertical Bias ", Ġ" animate Vertical Bias Stage "], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire All Ġ= Ġtrue ) ĊĠĠĠ Ġ@ Jvm Static Ġfun Ġanimate Vertical Bias ( view : ĠView , Ġtimer Running : ĠBoolean , Ġactive Stage : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠChange Ġthe Ġvertical Ġbias Ġof Ġthe ĠView Ġdepending Ġon Ġthe Ġcurrent Ġstate ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Running Ġ&& Ġactive Stage Ġ-> Ġanimate Vertical Bias ( view , Ġ 0 . 6 f ) Ġ// ĠWork out ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer Running Ġ&& Ġ! active Stage Ġ-> Ġanimate Vertical Bias ( view , Ġ 0 . 4 f ) Ġ// ĠRest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġanimate Vertical Bias ( view , Ġ 0 . 5 f ) Ġ// ĠId le ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate Bg Color ( view : ĠView , Ġt int : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcolor Res Ġ= ĠContext Compat . getColor ( view . context , ĠR . color . color Primary Light ) ĊĠĠĠĠĠĠĠ Ġval Ġcolor 2 Res Ġ= ĠContext Compat . getColor ( view . context , ĠR . color . disabled Input Color ) ĊĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= Ġif Ġ( tint ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Animator . of Object ( view , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" backgroundColor ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArg b Evaluator (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor 2 Res , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Res ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Animator . of Object ( view , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" backgroundColor ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArg b Evaluator (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Res , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor 2 Res ) ĊĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= ĠBG _ COLOR _ ANIM ATION _ DURATION ĊĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġanimate Vertical Bias ( view : ĠView , Ġposition : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Params : ĠConstraint Layout . LayoutParams Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . layout Params Ġas ĠConstraint Layout . LayoutParams ĊĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠValue Animator . of Float ( layout Params . vertical Bias , Ġposition ) ĊĠĠĠĠĠĠĠ Ġanim ator . add Update Listener Ġ{ Ġanimation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Params : ĠConstraint Layout . LayoutParams Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . layout Params Ġas ĠConstraint Layout . LayoutParams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanimated Value Ġ= Ġanimation . animated Value Ġas ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Params . vertical Bias Ġ= Ġanimated Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . request Layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġanim ator . interpol ator Ġ= ĠDec el erate Interpolator () ĊĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= ĠV ERT ICAL _ BI AS _ ANIM ATION _ DURATION ĊĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠ Ġ} Ċ } Ċ