package Ġcom . t fig h iera . reveal activity . extension . widget Ċ Ċ import Ġandroid . content . Clip Data Ċ import Ġandroid . support . design . widget . Coordinator Layout Ċ import Ġandroid . support . design . widget . Floating ActionButton Ċ import Ġandroid . support . v 4 . view . View Compat Ċ import Ġandroid . view . Drag Event Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . LinearLayout Ċ Ċ /** Ċ Ġ* ĠExtension ĠClass Ġfor Ġ{@ link ĠFloating ActionButton } Ċ Ġ* Ċ Ġ* Ġ Ġcreated Ġon Ġ 0 8 / 1 1 / 2 0 1 7 Ċ Ġ* Ċ Ġ* Ġ Ġ@ version Ġ 1 . 0 Ċ Ġ* Ġ Ġ@ author Ġtf i Ċ Ġ*/ Ċ Ċ fun ĠFloating ActionButton . set Drag Drop ( target : ĠView ) Ġ{ ĊĠĠĠ Ġset On Long ClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠ ĠView Compat . start Drag And Drop ( view , ĠClip Data . new Plain Text ("", Ġ""), ĠView . Drag Shadow Builder ( view ), Ġnull , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġset On Drag Listener Ġ{ Ġview , Ġdrag Event Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( drag Event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDrag Event . ACTION _ DR AG _ ENTER ED , ĠDrag Event . ACTION _ DR AG _ STARTED Ġ-> Ġview . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDrag Event . ACTION _ DR AG _ ENDED Ġ-> Ġview . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠ Ġtarget . setOn Drag Listener Ġ{ Ġ_, Ġevent Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( event . action Ġ== ĠDrag Event . ACTION _ DROP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Position No Gravity ( event . x . toInt (), Ġevent . y . toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠFloating ActionButton . setPosition No Gravity ( x : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġparams Ġ= Ġlayout Params Ġas ĠViewGroup . Margin LayoutParams ĊĠĠĠ Ġlayout Params Ġ= Ġparams . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCoord inator Layout . LayoutParams Ġ-> Ġgravity Ġ= ĠGr avity . NO _ GR AV ITY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFrame Layout . LayoutParams Ġ-> Ġgravity Ġ= ĠGr avity . NO _ GR AV ITY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLinearLayout . LayoutParams Ġ-> Ġgravity Ġ= ĠGr avity . NO _ GR AV ITY ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġleft Margin Ġ= Ġx Ġ- Ġthis @ setPosition No Gravity . width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġy Ġ- Ġthis @ setPosition No Gravity . height Ġ/ Ġ 2 ĊĠĠĠ Ġ} Ċ }