package Ġorg . ph cb est . net eas ym usic . ui . widget . play Bar Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Message Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroidx . core . graphics . drawable . to Bitmap Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . target . Custom Target Ċ import Ġcom . bump tech . glide . request . transition . Transition Ċ import Ġorg . ph cb est . net eas ym usic . R Ċ import Ġorg . ph cb est . net eas ym usic . ui . widget . tool . Custom Utils Ċ import Ġorg . ph cb est . net eas ym usic . utils . Constants ĊĊ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Turn Image Cover " Ċ Ċ class ĠTurn Image Cover Ġ: ĠView Ġ{ ĊĠĠĠ Ġ// ä¸Ĭä¸ĭ æĸĩ ĊĠĠĠ Ġprivate Ġvar ĠmContext : ĠContext ? Ġ= Ġnull ĊĊĠĠĠ Ġ// åĽ¾çīĩ ĊĠĠĠ Ġprivate Ġvar Ġm Back Bm : ĠBitmap ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Front Bm : ĠBitmap ? Ġ= Ġnull ĊĊĠĠĠ Ġ// rect ä½įç½® ĊĠĠĠ Ġprivate Ġvar Ġm Back Rect Ġ= ĠRect () ĊĠĠĠ Ġprivate Ġvar Ġm Front Rect Ġ= ĠRect () ĊĊĠĠĠ Ġ// çĶ» ç¬Ķ ĊĠĠĠ Ġprivate Ġvar Ġm Back Paint Ġ= ĠPaint () ĊĠĠĠ Ġprivate Ġvar Ġm Front Paint Ġ= ĠPaint () ĊĊĠĠĠ Ġ// å¸¸ éĩı ĊĠĠĠ Ġprivate Ġvar ĠHAL F Ġ= Ġ 0 . 5 F ĊĠĠĠ Ġprivate Ġvar ĠQU AR TER Ġ= Ġ 0 . 1 5 F ĊĊĠĠĠ Ġ// æĹ ĭ è½¬ è§Ĵ åº¦ ĊĠĠĠ Ġprivate Ġvar Ġdegrees Ġ= Ġ 0 f ĊĊĊĠĠĠ Ġprivate Ġvar Ġhandler Turn : ĠHandler ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġthis ( context , Ġnull ) ĊĊĠĠĠ Ġ// åľ¨ xml ä¸Ń è°ĥçĶ¨ ä½¿çĶ¨ çļĦæĺ¯ è¿Ļä¸ª æĸ¹æ³ķ ĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġthis ( context , Ġattrs , Ġ 0 ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Attr ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . mContext Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åĪĿå§ĭåĮĸ åīį åĲİ èĥĮæĻ¯ bitmap éĺ² æŃ¢ ç©º å¯¹è±¡ ĊĠĠĠĠĠĠĠ Ġm Back Bm Ġ= Ġresources . get Drawable ( R . drawable . cd _ bg , Ġnull ). to Bitmap () ĊĠĠĠĠĠĠĠ Ġm Front Bm Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCustom Utils . getInstance (). getC ircle Bitmap ( resources . get Drawable ( R . drawable . cd _ fg _ sample , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Bitmap ()) ĊĠĠĠĠĠĠĠ Ġ// çŁ© å½¢ åĴĮ åĽ¾ çĶ» åıĤæķ° ĊĠĠĠĠĠĠĠ Ġm Back Paint . is Anti Alias Ġ= Ġtrue Ġ// æĬ Ĺ éĶ ¯ é½ ¿ ĊĠĠĠĠĠĠĠ Ġm Front Paint . is Anti Alias Ġ= Ġtrue Ġ// æĬ Ĺ éĶ ¯ é½ ¿ ĊĠĠĠĠĠĠĠ Ġ// éħįç½® åĬ¨çĶ» ĊĠĠĠĠĠĠĠ Ġval Ġcd Animation Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠAnimation Utils . load Animation ( mContext , ĠR . anim . anim _ play _ bar _ cd _ turn ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Animator . of Float ( this , Ġ" rotation ", Ġ 0 F , Ġ 3 6 0 f ) ĊĠĠĠĠĠĠĠ Ġcd Animation . duration Ġ= Ġ 3 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġcd Animation . repeat Count Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġcd Animation . start () ĊĠĠĠĠĠĠĠ Ġcd Animation . pause () ĊĠĠĠĠĠĠĠ Ġcd Animation . interpol ator Ġ= ĠLinear Interpolator () Ġ// è®¾ç½® åĮ Ģ éĢŁ è½¬ åĬ¨ ĊĠĠĠĠĠĠĠ Ġ// åĪĽå»º handler çĶ¨äºİ æĹ ĭ è½¬ view ĊĠĠĠĠĠĠĠ Ġhandler Turn Ġ= ĠHandler ( Looper . my Looper () !! ) Ġ{ Ġmsg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( msg . what Ġ== ĠConstants . Handler Param Key . HANDLER _ T URN _ IMAGE _ COVER _ START ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éħįç½® è½¬ åĬ¨ åĬ¨çĶ» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcd Animation . resume () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . start Animation ( cd Animation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( msg . what Ġ== ĠConstants . Handler Param Key . HANDLER _ T URN _ IMAGE _ COVER _ STOP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æļĤ åģľ è½¬ åĬ¨ åĬ¨çĶ» Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . clear Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcd Animation . pause () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġm Size Ġ= ĠMeasure Spec . getSize ( width Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġh Size Ġ= ĠMeasure Spec . getSize ( height Measure Spec ) ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" on Measure : Ġ$ m Size Ġ$ h Size ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" on Measure : Ġ$ height Ġ$ width Ġ$ left Ġ$ right Ġ$ top Ġ$ bottom Ġ") ĊĠĠĠĠĠĠĠ Ġ// çĶ» å¸ĥ æĹ ĭ è½¬ ĊĠĠĠĠĠĠĠ Ġcanvas ?. rotate ( degrees , Ġ( width Ġ/ Ġ 2 ). toFloat (), Ġ( height Ġ/ Ġ 2 ). toFloat ()) ĊĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ cd ĊĠĠĠĠĠĠĠ Ġm Back Rect . set ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠ Ġcanvas ?. draw Bitmap ( m Back Bm !! , Ġnull , Ġm Back Rect , Ġm Back Paint ) ĊĠĠĠĠĠĠĠ Ġ// ç»ĺ åĪ¶ åľĨ å½¢ å°ģ éĿ¢ ĊĠĠĠĠĠĠĠ Ġm Front Rect . set ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( width Ġ* ĠQU AR TER ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( height Ġ* ĠQU AR TER ). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( width Ġ- Ġ( width Ġ* ĠQU AR TER )). toInt (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( height Ġ- Ġ( height Ġ* ĠQU AR TER )). toInt () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Front Bm Ġ!= Ġnull ) Ġcanvas ?. draw Bitmap ( m Front Bm !! , Ġnull , Ġm Front Rect , Ġm Front Paint ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠĠĠĠĠ Ġstop Turn () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġback Ġ è¿Ļä¸ª åıĤæķ° æĺ¯ èĥĮæĻ¯ , å¦Ĥæŀľ ä¸º - 1 , å°± ä½¿çĶ¨ é»ĺè®¤ èĥĮæĻ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Back And Front Ground ( back : ĠInt , Ġfront : ĠString ): ĠTurn Image Cover Ġ{ ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® èĥĮæĻ¯ ĊĠĠĠĠĠĠĠ Ġif Ġ( back Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Back Bm Ġ= Ġresources . get Drawable ( R . drawable . cd _ bg , Ġnull ). to Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Back Bm Ġ= Ġresources . get Drawable ( back , Ġnull ). to Bitmap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® åīį æĻ¯ ĊĠĠĠĠĠĠĠ ĠG lide . with ( mContext !! ). as Bitmap (). load ("$ front ? param = 1 3 0 y 1 3 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( object Ġ: ĠCustom Target < Bitmap >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠBitmap , Ġtransition : ĠTransition < in ĠBitmap > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Front Bm Ġ= ĠCustom Utils . getInstance (). getC ircle Bitmap ( resource ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĪ·æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Cle ared ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¼Ģå§ĭ æĹ ĭ è½¬ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstart Turn () Ġ{ ĊĠĠĠĠĠĠĠ ĠConstants . Handler Param Key . HANDLER _ T URN _ IMAGE _ COVER _ START . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . what Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler Turn !!. sendMessage ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åģľæŃ¢ æĹ ĭ è½¬ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstop Turn () Ġ{ ĊĠĠĠĠĠĠĠ ĠConstants . Handler Param Key . HANDLER _ T URN _ IMAGE _ COVER _ STOP . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠMessage () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . what Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler Turn !!. sendMessage ( message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }