package Ġcom . h encoder . drag . view Ċ Ċ import Ġandroid . content . Clip Data Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Drag Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . On Long ClickListener Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . core . view . View Compat Ċ import Ġkotlinx . android . synt hetic . main . drag _ to _ collect . view .* Ċ Ċ class ĠDrag To Collect Layout ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: ĠConstraint Layout ( context , Ġattrs ) Ġ{ ĊĠ Ġprivate Ġvar Ġdrag Starter Ġ= ĠOn Long ClickListener Ġ{ Ġv Ġ-> ĊĊĠĠĠ Ġval Ġimage Data Ġ= ĠClip Data . new Plain Text (" name ", Ġv . content Description ) ĊĠĠĠ Ġ// Ġcontent Description Ġ è¿Ļä¸ª åıĺéĩı ï¼Į æĺ¯ ä¸º æ® ĭ éļľ äºº å£« åĩĨå¤ĩ çļĦ ĊĊĊĠĠĠ ĠView Compat . start Drag And Drop ( v , Ġimage Data , ĠDrag Shadow Builder ( v ), Ġnull , Ġ 0 ) ĊĠĠĠ Ġ// Ġ å¼ĢåĲ¯ åĲİ ï¼Į ä¼ļ æĭ¿ åĪ° æķ´ä¸ª è§ĨåĽ¾ æłĳ çļĦ ĠView Root Impl ï¼Į æīĢä»¥ ï¼Į è¯¥ æłĳ ä¸ĭçļĦ æīĢæľī åŃĲ Ġview ï¼Į éĥ½ èĥ½ æĶ¶ åĪ° æĭ ĸ æĭ ½ åĽŀè°ĥ ĊĠĠĠ Ġ// Ġ ç¬¬äºĮ ä¸ª åıĤæķ° ï¼Į Clip Data ï¼Į åı¯ä»¥ è·¨ è¿Ľç¨ĭ æĭ ĸ æĭ ½ ï¼ģ æ¯Ķå¦Ĥ çĽ¸ åĨĮ çļĦ çħ§ çīĩ æĭ ĸ åĪ° åħ¶ä»ĸ åºĶçĶ¨ ï¼Į éĶ ¤ åŃĲ çļĦä¸Ģ æŃ¥ ĊĠĠĠ Ġ// ĠClip Data Ġ è¿Ļä¸ª æķ°æį® ï¼Į åıªæľī æĿ ¾ æīĭ æīį åı¯ä»¥ æĭ¿ åĪ° ï¼Į æ¯ķ ç« Ł è·¨ è¿Ľç¨ĭ åĺ Ľ ï¼Į æ¯Ķè¾ĥ éĩį ĊĠĠĠ Ġ// Ġ ç¬¬ä¸ī ä¸ª åıĤæķ° ï¼Į Drag Shadow Builder ï¼Į åį³ æĭ ĸ èµ· æĿ¥çļĦ éĤ£ ä¸ª åįĬ éĢı æĺİ çļĦ çī© ä½ĵ ï¼Į å°± éķ¿ ĠDrag Shadow Builder Ġ è¿Ļæł· ĊĊĠĠĠ Ġ// Ġstart Drag And Drop Ġ è¿Ļä¸ª åĩ½æķ° ï¼Į ä¸»è¦ģ åħ³æ³¨ æĭ ĸ èµ· åĴĮ æĶ¾ ä¸ĭ ä¸¤ä¸ª åĬ¨ ä½ľ ï¼Į åį³ åľ¨ åĵª éĩĮ æĭ ĸ èµ· ï¼Į åľ¨ åĵª éĩĮ æĶ¾ ä¸ĭ ï¼Į åį³ è¡¨ç¤º æķ°æį® ä»İ åĵª éĩĮ åĪ° åĵª éĩĮ åİ» ĊĠĠĠ Ġ// ĠDrag Shadow Builder Ġ èµ· åĪ°äºĨ é¢Ħ è§Ī çļĦ ä½ľçĶ¨ ï¼Į åİŁ åĽ¾åĥı ä¸įéľĢè¦ģ æ¶Ī å¤± ï¼Ľ ĊĠĠĠ Ġ// ĠDrag Shadow Builder Ġ ä¸įæĺ¯ ä¸Ģä¸ª Ġview ï¼Į èĢĮ æĺ¯ ä¸Ģ åĿ ¨ åĥı ç´ł ï¼Į ç»ĺ åĪ¶ åľ¨ å±ı å¹ķ çļĦ æľĢ é¡¶ éĥ¨ ĊĠĠĠ Ġ// Ġ æīĢä»¥ è¿Ļä¸ª ä¹Łåı¯ä»¥ æĪĲä¸º æķ°æį® æĭ ĸ æĭ ½ ĊĊĠ Ġ} ĊĠ Ġprivate Ġvar Ġdrag Listener : ĠOn Drag Listener Ġ= ĠCollect Listener () ĊĊĠ Ġoverride Ġfun Ġon Finish Inf late () Ġ{ ĊĠĠĠ Ġsuper . on Finish Inf late () ĊĊĠĠĠ Ġavatar View . setOn Long ClickListener ( drag Starter ) ĊĠĠĠ Ġlogo View . setOn Long ClickListener ( drag Starter ) ĊĊĠĠĠ Ġcollector Layout . setOn Drag Listener ( drag Listener ) ĊĠ Ġ} ĊĊĠ Ġinner Ġclass ĠCollect Listener Ġ: ĠOn Drag Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Drag ( v : ĠView , Ġevent : ĠDrag Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDrag Event . ACTION _ DROP Ġ-> Ġif Ġ( v Ġis ĠLinearLayout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= ĠTextView ( context ) ĊĠĠĠĠĠĠĠĠĠ ĠtextView . text Size Ġ= Ġ 1 6 f ĊĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġevent . clip Data . getItem At ( 0 ). text Ġ// Ġèİ·åıĸ åħĥ æķ°æį® ĊĠĠĠĠĠĠĠĠĠ Ġv . addView ( textView ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ