package Ġcom . example . par it osh . copy cat Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . PixelFormat Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . os . Build Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . WindowManager Ċ Ċ class ĠCat Overlay Ġconstructor ( context : ĠContext ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġwindow Manager Ġ= Ġcontext . getSystem Service ( Context . WINDOW _ SERVICE ) Ġas ĠWindow Manager ĊĊĠĠĠ Ġprivate Ġval Ġparams Ġ= ĠWindow Manager . LayoutParams ( ĊĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . TYPE _ APPLICATION _ OVER LAY ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . TYPE _ PHONE ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ ĠWindow Manager . LayoutParams . FLAG _ NOT _ FOCUS ABLE , ĊĠĠĠĠĠĠĠ ĠPixel Format . TRANSL UC ENT ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġview Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . cat _ overlay _ layout , Ġnull ) ĊĊĠĠĠ Ġvar Ġis Showing Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Rect Ġ= ĠRect () ĊĠĠĠĠĠĠĠ Ġwindow Manager . default Display . get Rect Size ( display Rect ) ĊĊĠĠĠĠĠĠĠ Ġparams . window Animations Ġ= ĠR . style . Cat Button Animations ĊĠĠĠĠĠĠĠ Ġparams . gravity Ġ= ĠGr avity . END Ġor ĠGr avity . BOTTOM Ġor ĠGr avity . DISPLAY _ CLIP _ HORIZONTAL ĊĠĠĠĠĠĠĠ Ġparams . x Ġ= Ġ( context . resources . get Dimension ( R . dim en . cat _ button _ size ) Ġ* Ġ- context . resources . get Fraction ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . fraction . cat _ button _ overflow _ x , Ġ 1 , Ġ 1 ĊĠĠĠĠĠĠĠ Ġ )). toInt () ĊĠĠĠĠĠĠĠ Ġparams . y Ġ= Ġ( display Rect . bottom Ġ* Ġcontext . resources . get Fraction ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . fraction . cat _ button _ position _ y , Ġ 1 , Ġ 1 ĊĠĠĠĠĠĠĠ Ġ )). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow Manager . addView ( view , Ġparams ) ĊĠĠĠĠĠĠĠ Ġis Showing Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdismiss () Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow Manager . remove View ( view ) ĊĠĠĠĠĠĠĠ Ġis Showing Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Cat Button ClickListener ( on Cat Button ClickListener : ĠOn Cat Button ClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . findViewById < Cat Button Layout >( R . id . cat Button ). setOn Child Button ClickListener Ġ{ Ġ_, Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( view . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . web Ġ-> Ġon Cat Button ClickListener . on Cat Button Click ( On Cat Button ClickListener . Button Type . WEB ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . dictionary Ġ-> Ġon Cat Button ClickListener . on Cat Button Click ( On Cat Button ClickListener . Button Type . DI CTIONARY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . translate Ġ-> Ġon Cat Button ClickListener . on Cat Button Click ( On Cat Button ClickListener . Button Type . TRANSL ATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Cat Button ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠButton Type Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWEB , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDICTIONARY , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTRAN SL ATE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Cat Button Click ( button Type : ĠButton Type ) ĊĠĠĠ Ġ} Ċ }