package Ġcn . rub in try . rt manager . core Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . View Tree Observer Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . room . Room Ċ import Ġcn . rub in try . rt manager . R Ċ import Ġcn . rub in try . rt manager . db . Runtime Database Ċ import Ġcom . blank j . util code . util . Size Utils Ċ Ċ class ĠR t View Manager Ġprivate Ġconstructor (){ ĊĊĠĠĠ Ġval Ġdb Ġ: ĠRuntime Database Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime Env . require App (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" runtime - database ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åħģè®¸ åľ¨ ä¸» çº¿ç¨ĭ ä¸Ĭ æŁ¥è¯¢ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow MainThread Queries () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance Ġ: ĠR t View Manager ?= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠR t View Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( null Ġ== Ġinstance ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( Rt View Manager :: class . java ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( null Ġ== Ġinstance ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠR t View Manager () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġattach To Activity ( activity : ĠActivity , Ġview : ĠView , Ġruntime Builder : ĠRuntime Builder ){ ĊĠĠĠĠĠĠĠ Ġif ( activity Ġis ĠUniversal Activity ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget Decor View ( activity ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . view Tree Observer . add On Global Layout Listener ( object Ġ: ĠView Tree Observer . On Global Layout Listener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Global Layout () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . view Tree Observer . remove On Global Layout Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeal Touch ( view Ġ, Ġruntime Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . addView ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġresume Main Icon ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( activity Ġis ĠUniversal Activity ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmain Icon View Ġ= Ġactivity . findViewById < Main Icon View >( R . id . runtime _ content view _ id ) ĊĠĠĠĠĠĠĠ Ġval Ġicon Pos List Ġ= Ġdb . icon Position Dao (). getAll () ĊĠĠĠĠĠĠĠ Ġif ( icon Pos List . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Pos Ġ= Ġicon Pos List . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġmain Icon View . parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( null Ġ!= Ġparent Ġ&& Ġparent Ġis ĠViewGroup ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Icon View . left Ġ= Ġicon Pos . left Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Icon View . top Ġ= Ġicon Pos . top Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Drag Proxy . getInstance (). smooth Slide View To ( parent Ġ, Ġicon Pos . left Ġ, Ġicon Pos . top ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Decor View ( activity : ĠActivity ) Ġ: ĠViewGroup { ĊĠĠĠĠĠĠĠ Ġreturn Ġactivity . window . decor View Ġas ĠViewGroup ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġprivate Ġfun Ġdeal Touch ( view : ĠView , Ġruntime Builder : ĠRuntime Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( view Ġis ĠViewGroup Ġ&& Ġview Ġis ĠI Runtime View ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView Compat . offset Top And Bottom ( view , ĠSize Utils . dp 2 px ( 5 0 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġview . parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( null Ġ!= Ġparent Ġ&& Ġparent Ġis ĠViewGroup ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . setOn Touch Listener Ġ{ Ġv , Ġevent Ġ-> Ġ ĠView Drag Proxy . getInstance (). proxy Drag ( parent Ġ, Ġevent Ġ, Ġruntime Builder )} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }