package Ġcom . ash ish . movie guide . utils . extensions Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . animation . Animator Set Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . support . annotation . Color Int Ċ import Ġandroid . support . annotation . String Res Ċ import Ġandroid . support . v 7 . view . menu . Action MenuItem View Ċ import Ġandroid . text . style . Type face Span Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . animation . Accel erate Interpolator Ċ import Ġandroid . view . animation . Over shoot Interpolator Ċ import Ġandroid . widget . ImageView Ċ import Ġcom . ash ish . movie guide . R Ċ import Ġjava . util . ArrayList Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠA sh ish Ġon ĠFeb Ġ 0 8 . Ċ Ġ*/ Ċ val ĠMenu . menus : ĠList < MenuItem > ĊĠĠĠ Ġget () Ġ= Ġ( 0 Ġuntil Ġsize ()). map Ġ{ ĠgetItem ( it ) Ġ} Ċ Ċ fun ĠMenu . change Menu And Sub Menu Font ( type face Span : ĠType face Span ) Ġ{ ĊĠĠĠ Ġmenus . filter NotNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġmenu Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item . title Ġ= Ġmenu Item . title . getText With Custom Type face ( type face Span ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( menuItem . has Sub Menu ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item . sub Menu . change Menu And Sub Menu Font ( type face Span ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠMenu . tint (@ Color Int Ġcolor : ĠInt ) Ġ= Ġmenus . forEach Ġ{ Ġit . tint ( color ) Ġ} Ċ Ċ fun ĠMenuItem ?. tint (@ Color Int Ġcolor : ĠInt ) Ġ= Ġthis ?. icon . tint ( color ) Ċ Ċ @ Suppress Lint (" Private Resource ") Ċ fun ĠActivity . set Overflow Menu Color ( color : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġdecor View Ġ= Ġwindow . decor View Ġas ĠViewGroup ĊĠĠĠ Ġval Ġoverflow Description Ġ= ĠgetString ( R . string . abc _ action _ menu _ overflow _ description ) ĊĊĠĠĠ Ġdecor View . on Layout La id Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġviews Ġ= ĠArrayList < View >() ĊĠĠĠĠĠĠĠ Ġdecor View . find View sWith Text ( views , Ġoverflow Description , ĠView . FIND _ V IE WS _ WITH _ CONTENT _ DESCRIPTION ) ĊĠĠĠĠĠĠĠ Ġif Ġ( views . isEmpty ()) Ġreturn @ on Layout La id ĊĊĠĠĠĠĠĠĠ Ġval Ġoverflow Ġ= Ġviews [ 0 ] Ġas ĠImageView ĊĠĠĠĠĠĠĠ Ġoverflow . setColor Filter ( color ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠMenu . set Favorite Icon ( is Favorite : ĠBoolean ?) Ġ{ ĊĠĠĠ Ġval Ġfav Item Ġ= Ġfind Item ( R . id . action _ favorite ) ĊĠĠĠ Ġfav Item . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( is Favorite Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon ( R . drawable . ic _ favorite _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon ( R . drawable . ic _ favorite _ border _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAction MenuItem View . start Favorite Animation ( is Favorite : ĠBoolean ) Ġ{ ĊĠĠĠ Ġval Ġanim ator Set Ġ= ĠAn imator Set () ĊĠĠĠ Ġval Ġanim Duration Ġ= Ġ 3 5 0 L ĊĠĠĠ Ġval Ġover shoot Interpolator Ġ= ĠOver shoot Interpolator () ĊĊĠĠĠ Ġval Ġrotation Anim Ġ= ĠObject Animator . of Float ( this , Ġ" rotation ", Ġ 0 f , Ġ 3 6 0 f ) ĊĠĠĠ Ġrotation Anim . duration Ġ= Ġanim Duration ĊĠĠĠ Ġrotation Anim . interpol ator Ġ= ĠAccel erate Interpolator () ĊĊĠĠĠ Ġval Ġbo unce Anim X Ġ= ĠObject Animator . of Float ( this , Ġ" scale X ", Ġ 0 . 3 f , Ġ 1 f ) ĊĠĠĠ Ġbo unce Anim X . duration Ġ= Ġanim Duration ĊĠĠĠ Ġbo unce Anim X . interpol ator Ġ= Ġover shoot Interpolator ĊĊĠĠĠ Ġval Ġbo unce Anim Y Ġ= ĠObject Animator . of Float ( this , Ġ" scale Y ", Ġ 0 . 3 f , Ġ 1 f ) ĊĠĠĠ Ġbo unce Anim Y . duration Ġ= Ġanim Duration ĊĠĠĠ Ġbo unce Anim Y . interpol ator Ġ= Ġover shoot Interpolator ĊĠĠĠ Ġbo unce Anim Y . addListener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( anim ator : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Favorite ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon ( context . get Drawable Compat ( R . drawable . ic _ favorite _ white _ 2 4 dp )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon ( context . get Drawable Compat ( R . drawable . ic _ favorite _ border _ white _ 2 4 dp )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġanim ator Set . play ( rotation Anim ) ĊĠĠĠ Ġanim ator Set . play ( bounce Anim X ). with ( bounce Anim Y ). after ( rotation Anim ) ĊĠĠĠ Ġanim ator Set . start () Ċ } Ċ Ċ fun ĠMenu . change Watch list MenuItem ( isIn Watch list : ĠBoolean ) Ġ{ ĊĠĠĠ Ġval Ġfav Item Ġ= Ġfind Item ( R . id . action _ watch list ) ĊĠĠĠ Ġfav Item . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( isIn Watch list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( R . string . remove _ from _ watch list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon ( R . drawable . ic _ watch list _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( R . string . add _ to _ watch list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon ( R . drawable . ic _ watch list _ border _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠMenu . set Rating Item Title (@ String Res Ġtitle Id : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġmenu Item Ġ= Ġfind Item ( R . id . action _ rating ) ĊĠĠĠ Ġmenu Item . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠsetTitle ( title Id ) ĊĠĠĠ Ġ} Ċ }