package Ġcom . xg imi . file manager . pop win Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context Wrapper Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . Handler Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Popup Window Ċ import Ġcom . blank j . util code . util . Screen Utils Ċ import Ġcom . xg imi . file manager . R Ċ import Ġcom . xg imi . file manager . list ern ers . On Menu ClickListener Ċ import Ġcom . xg imi . file manager . list ern ers . Xg imi Menu Listener Ċ import Ġcom . xg imi . file manager . menus . Xg imi MenuItem Ċ import Ġcom . xg imi . file manager . utils . Device Util Ċ import Ġcom . xg imi . file manager . views . Blur Bg View Ċ import Ġcom . xg imi . g im isk in . cell . setStyle Ċ import Ġcom . xg imi . view . cell . Cell Ċ import Ġcom . xg imi . view . cell . Cell View Ċ import Ġcom . xg imi . view . cell . Global Config Ċ import Ġcom . xg imi . view . cell . Threads Ċ import Ġcom . xg imi . view . cell . action . Scale ToAction Ċ import Ġcom . xg imi . view . cell . component . Focus Component Ċ import Ġcom . xg imi . view . cell . component . Image Component Ċ import Ġcom . xg imi . view . cell . component . Text Component Ċ import Ġcom . xg imi . view . cell . layout . Gravity Ċ import Ġcom . xg imi . view . cell . layout . LinearLayout Ċ Ċ /** Ċ Ġ* ĠĠĠ Ġauthor Ġ: Ġj oker . peng Ċ Ġ* ĠĠĠ Ġe - mail Ġ: Ġj oker . peng @ xg imi . com Ċ Ġ* ĠĠĠ Ġdate ĠĠ Ġ: Ġ 2 0 2 0 / 8 / 1 0 Ġ 1 8 : 4 5 Ċ Ġ* ĠĠĠ Ġdesc ĠĠ Ġ: Ċ Ġ*/ Ċ class ĠX g imi Menu Pop Ġ: ĠPopup Window Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Anchor View : ĠView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠmCurrent Xg imi MenuItem : ĠX g imi MenuItem ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Menu ClickListener : ĠOn Menu ClickListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠmContext : ĠContext ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġshot Bitmap : ĠBitmap ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Handler : ĠHandler Ġ= ĠHandler () ĊĠĠĠ Ġprivate Ġvar Ġforce Dismiss Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġm Xg imi Menu Listener : ĠX g imi Menu Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Thread : ĠThread ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġroot : ĠCell Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠCell ( LinearLayout ( LinearLayout . VERTICAL , Ġ 1 2 ). set Align ( Gravity . CENTER )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addComponent ( Image Component ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Config . add Behavior ( id , ĠGlobal Config . BE HAV IOR _ NO _ EFFECT S ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcell View : ĠCell View Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠCell View ( mContext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġthis ( context , Ġnull ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: Ġthis ( context , Ġattrs , Ġ 0 ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Attr ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġthis . is Focus able Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġthis . is Outside Touchable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġthis . animation Style Ġ= ĠR . style . menu animation preview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġwidth Ġ= Ġ 3 1 0 ĊĠĠĠĠĠĠĠ Ġheight Ġ= ĠScreen Utils . get Screen Height () ĊĠĠĠĠĠĠĠ Ġm Anchor View Ġ= Ġget Wrapper Activity ( mContext )?. window ?. decor View ?. findViewById ( android . R . id . content ) ĊĠĠĠĠĠĠĠ Ġcell View . init ( mContext ) ĊĠĠĠĠĠĠĠ Ġcontent View Ġ= Ġcell View ĊĠĠĠĠĠĠĠ Ġcell View . root Ġ= Ġroot ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Xg imi Menu Listener ( listener : ĠX g imi Menu Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Xg imi Menu Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Wrapper Activity ( context : ĠContext ?): ĠActivity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( context Ġis ĠContext Wrapper ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Wrapper Activity ( context . base Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Showing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate Blur Back () ĊĠĠĠĠĠĠĠ Ġshow As DropDown ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Anchor View , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- Screen Utils . get Screen Height () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġm Xg imi Menu Listener ?. on Menu Start Showing () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide () Ġ{ ĊĠĠĠĠĠĠĠ Ġforce Dismiss Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Thread ?. interrupt () ĊĠĠĠĠĠĠĠ Ġm Thread Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Blur Back () Ġ{ ĊĠĠĠĠĠĠĠ ĠThread s . post To Background Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġblur Bg View Ġ= ĠBl ur Bg View ( mContext !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshot Bitmap Ġ= ĠScreen Utils . screen Shot ( mContext Ġas ĠActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblur B : ĠBitmap ? Ġ= Ġblur Bg View . do Blur ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . create Bitmap ( shot Bitmap !! , Ġ 0 , Ġ 0 , Ġwidth , ĠScreen Utils . get Screen Height ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . find Component < Image Component >( 0 ). res Ġ= Ġblur B ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Menu List ( xg imi MenuItem : ĠX g imi MenuItem ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġx g imi MenuItem ?. sub Menus ?. forEach Indexed Ġ{ Ġ_, Ġx g imi MenuItem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCell ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFocus Component (). setColor Res ( R . color . color _ brand _ 1 ). set Stroke Width (- 1 f ). set Corner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). set With Padding ( false )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Cell ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCell ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Component (). setText ( xg imi MenuItem . name ). set El lipsis ( true ). setStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . font _ cross head _ medium _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). set Mask ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Padding ( 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Focus able ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Effects ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn Focus ChangeListener Ġ{ Ġself , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġself . getCell ( 0 ). find Component < Text Component >( 0 ). set Mar quee ( self . is Focused ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScale ToAction (). to ( if Ġ( self . is Focused ) Ġ 1 . 2 f Ġelse Ġ 1 f ). start ( self ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( root , ĠLinearLayout . Params ( 2 1 2 , Ġ 8 0 , ĠGr avity . CENTER )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Menus ( menus : ĠX g imi MenuItem ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenus ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomplement Menu () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Menus ( menus , Ġ- 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Menus ( xg imi MenuItem : ĠX g imi MenuItem ?, Ġact iom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( xg imi MenuItem ?. sub Menus Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmCurrent Xg imi MenuItem Ġ= Ġx g imi MenuItem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" false ". equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDevice Util . get Prop (" persist . xg imi . app . animation . enable ", Ġ" true "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġignore Case Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// animation Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Menu List ( xg imi MenuItem ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Menu ClickListener ( on Menu ClickListener : ĠOn Menu ClickListener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Menu ClickListener Ġ= Ġon Menu ClickListener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Handler . remove Callbacks And Messages ( null ) ĊĠĠĠĠĠĠĠ Ġm Thread ?. interrupt () ĊĠĠĠĠĠĠĠ Ġm Thread Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġshot Bitmap ?. recycle () ĊĠĠĠ Ġ} Ċ }