package Ġcom . sw iz el . android . where int he world . utils Ċ Ċ import Ġandroid . graphics . drawable . Transition Drawable Ċ import Ġandroid . os . Handler Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . core . content . res . Resources Compat Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAnd y Ġon Ġ 2 / 0 8 / 2 0 1 4 . Ċ Ġ*/ Ċ class ĠMulti Transition Drawable ( private Ġval Ġm ImageView : ĠImageView , Ġprivate Ġval Ġm Draw ables : ĠInt Array ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ ANIM ATION _ SPEED Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ ANIM ATION _ DELAY Ġ= Ġ 4 0 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm First Frame Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Second Frame Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġm Animation Speed Ġ= ĠDEFAULT _ ANIM ATION _ SPEED ĊĠĠĠ Ġprivate Ġvar Ġm Animation Delay Ġ= ĠDEFAULT _ ANIM ATION _ DELAY ĊĠĠĠ Ġprivate Ġval Ġm Original Scale Type Ġ= Ġm ImageView . scale Type ĊĊĠĠĠ Ġprivate Ġval Ġm Animation Handler Ġ= ĠHandler () ĊĠĠĠ Ġprivate Ġval Ġm Animation Runnable Ġ= Ġobject Ġ: ĠRunnable Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtd Ġ= ĠTransition Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResources Compat . get Drawable ( m ImageView . resources , Ġm Draw ables [ m First Frame ], Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResources Compat . get Drawable ( m ImageView . resources , Ġm Draw ables [ m Second Frame ], Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ImageView . setImage Drawable ( td ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ImageView . scale Type Ġ= Ġm Original Scale Type ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtd . start Transition ( m Animation Speed ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm First Frame Ġ= Ġ( m First Frame Ġ+ Ġ 1 ) Ġ% Ġm Draw ables . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Second Frame Ġ= Ġ( m Second Frame Ġ+ Ġ 1 ) Ġ% Ġm Draw ables . size ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Animation Handler . post Delayed ( this , Ġ( m Animation Delay Ġ+ Ġm Animation Speed ). to Long ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Animation Speed ( animation Speed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Animation Speed Ġ= Ġanimation Speed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Animation Delay ( animation Delay : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Animation Delay Ġ= Ġanimation Delay ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Padding ( left : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm ImageView . set Padding ( left , Ġtop , Ġright , Ġbottom ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Animation Handler . remove Callbacks ( m Animation Runnable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠShow Ġfirst Ġframe Ġand Ġthen Ġsetup Ġdelay Ġfor Ġfirst Ġtransition . ĊĠĠĠĠĠĠĠ Ġm First Frame Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġm Second Frame Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġm ImageView . setImage Drawable ( Resources Compat . get Drawable ( m ImageView . resources , Ġm Draw ables [ m First Frame ], Ġnull )) ĊĊĠĠĠĠĠĠĠ Ġm Animation Handler . post Delayed ( m Animation Runnable , Ġm Animation Delay . to Long ()) ĊĠĠĠ Ġ} Ċ Ċ } Ċ