package Ġcom . ng . ui . other . drag Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . constraint layout . widget . Constraint Set Ċ import Ġandroidx . core . view . contains Ċ import Ġcom . ng . ui . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ drag . view .* Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġæı ı è¿° : Ġ Ġåı¯ æĭ ĸ åĬ¨ layout Ċ Ġ* Ġ@ author ĠJ zn Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 9 / 8 Ċ Ġ*/ Ċ class ĠZ Layout Ġ: ĠConstraint Layout , Z Layout Stretch Listener Ġ{ ĊĠĠĠ Ġ// åŃĲ layout åĪĹè¡¨ ĊĠĠĠ Ġprivate Ġvar Ġm Child Layout List Ġ= Ġarray ListOf < Z Child Layout >() ĊĊĠĠĠ Ġ// å½ĵåīį æĵįä½ľ view ĊĠĠĠ Ġprivate Ġvar Ġm Operation View : ĠConstraint Layout ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Operation Index : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġ// ç»ĺ åĪ¶ ĊĠĠĠ Ġprivate Ġvar Ġm Is Drawing Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Anim Item View : ĠImageView ĊĊĠĠĠ Ġ// æĵįä½ľ ç¬¦ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Left Arrow : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Right Arrow : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Up Arrow : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Down Arrow : ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Arrow List : ĠArrayList < ImageView > ĊĠĠĠ Ġprivate Ġvar Ġm Arrow Res List Ġ= Ġarray ListOf ( R . drawable . ic _ left , ĠR . drawable . ic _ up , ĠR . drawable . ic _ right , ĠR . drawable . ic _ down ) ĊĊĠĠĠ Ġ// æĵįä½ľ ç¬¦ åĮºåŁŁ ĊĠĠĠ Ġprivate Ġvar Ġm Left Rect : ĠRect Ġ= ĠRect () ĊĠĠĠ Ġprivate Ġvar Ġm Right Rect : ĠRect Ġ= ĠRect () ĊĠĠĠ Ġprivate Ġvar Ġm Up Rect : ĠRect Ġ= ĠRect () ĊĠĠĠ Ġprivate Ġvar Ġm Down Rect : ĠRect Ġ= ĠRect () ĊĠĠĠ Ġprivate Ġvar Ġm Arrow Rect List : ĠArrayList < Rect > Ġ= Ġarray ListOf () ĊĊĠĠĠ Ġ// çĪ¶ å¸ĥå±Ģ id ĊĠĠĠ Ġprivate Ġvar Ġm Root Id Ġ= Ġ 0 ĊĊĠĠĠ Ġ// ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context !! , Ġattrs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit All () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Root Id Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġm Anim Item View Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġm Anim Item View . scale Type Ġ= ĠImageView . Scale Type . FIT _ XY ĊĠĠĠĠĠĠĠ Ġm Left Arrow Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġm Right Arrow Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġm Up Arrow Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġm Down Arrow Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġm Left Arrow . setImage Resource ( m Arrow Res List [ 0 ]) ĊĠĠĠĠĠĠĠ Ġm Up Arrow . setImage Resource ( m Arrow Res List [ 1 ]) ĊĠĠĠĠĠĠĠ Ġm Right Arrow . setImage Resource ( m Arrow Res List [ 2 ]) ĊĠĠĠĠĠĠĠ Ġm Down Arrow . setImage Resource ( m Arrow Res List [ 3 ]) ĊĠĠĠĠĠĠĠ Ġm Arrow List Ġ= Ġarray ListOf ( m Left Arrow , Ġm Up Arrow , Ġm Right Arrow , Ġm Down Arrow ) ĊĠĠĠĠĠĠĠ Ġm Arrow Rect List Ġ= Ġarray ListOf ( m Left Rect , Ġm Up Rect , Ġm Right Rect , Ġm Down Rect ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Draw Allocation ") ĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Layout ( changed , Ġleft , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠ Ġvar Ġm Arrow Width Ġ= Ġm Left Arrow . width ĊĠĠĠĠĠĠĠ Ġvar Ġm Arrow Height Ġ= Ġm Left Arrow . height ĊĠĠĠĠĠĠĠ Ġ// ç¡®å®ļ æĵįä½ľ ç¬¦ ä½įç½® ĊĠĠĠĠĠĠĠ Ġm Left Arrow . x Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġm Left Arrow . y Ġ= Ġheight Ġ/ Ġ 2 . toFloat () Ġ- Ġm Arrow Height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Right Arrow . x Ġ= Ġwidth . toFloat () Ġ- Ġm Arrow Width ĊĠĠĠĠĠĠĠ Ġm Right Arrow . y Ġ= Ġheight Ġ/ Ġ 2 . toFloat () Ġ- Ġm Arrow Height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Up Arrow . x Ġ= Ġwidth Ġ/ Ġ 2 . toFloat () Ġ- Ġm Arrow Width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Up Arrow . y Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġm Down Arrow . x Ġ= Ġwidth Ġ/ Ġ 2 . toFloat () Ġ- Ġm Arrow Width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġm Down Arrow . y Ġ= Ġheight . toFloat () Ġ- Ġm Arrow Height ĊĠĠĠĠĠĠĠ Ġ// ç¡®å®ļ æĵįä½ľ ç¬¦ åĮºåŁŁ ĊĠĠĠĠĠĠĠ Ġ// æī© å¤§ ä¸Ģ çĤ¹ åĮºåŁŁ ï¼Į æĸ¹ä¾¿ éĢī ä¸Ń ĊĠĠĠĠĠĠĠ Ġm Arrow Width Ġ+= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġm Arrow Height Ġ+= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġm Left Rect Ġ= ĠRect ( 0 , Ġheight Ġ/ Ġ 2 Ġ- Ġm Arrow Height Ġ/ Ġ 2 , Ġm Arrow Width , Ġheight Ġ/ Ġ 2 Ġ+ Ġm Arrow Height Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġm Right Rect Ġ= ĠRect ( width Ġ- Ġm Arrow Width , Ġheight Ġ/ Ġ 2 Ġ- Ġm Arrow Height Ġ/ Ġ 2 , Ġwidth , Ġheight Ġ/ Ġ 2 Ġ+ Ġm Arrow Height Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġm Up Rect Ġ= ĠRect ( width Ġ/ Ġ 2 Ġ- Ġm Arrow Width Ġ/ Ġ 2 , Ġ 0 , Ġwidth Ġ/ Ġ 2 Ġ+ Ġm Arrow Width Ġ/ Ġ 2 , Ġm Arrow Height ) ĊĠĠĠĠĠĠĠ Ġm Down Rect Ġ= ĠRect ( width Ġ/ Ġ 2 Ġ- Ġm Arrow Width Ġ/ Ġ 2 , Ġheight Ġ- Ġm Arrow Height , Ġwidth Ġ/ Ġ 2 Ġ+ Ġm Arrow Width Ġ/ Ġ 2 , Ġheight ) ĊĠĠĠĠĠĠĠ Ġm Arrow Rect List Ġ= Ġarray ListOf ( m Left Rect , Ġm Up Rect , Ġm Right Rect , Ġm Down Rect ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval Ġchild Count Ġ= Ġchild Count ĊĠĠĠĠĠĠĠ Ġm Child Layout List . clear () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild View : ĠView Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child View Ġis ĠZ Child Layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Layout List . add ( child View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild View . measure ( width Measure Spec , Ġheight Measure Spec ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠĠĠĠĠ Ġm Child Layout List . forEach Indexed Ġ{ Ġindex , Ġchild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . set CallBack ( index , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// æĭ ĸ åĬ¨ çļĦ ä½įç½® ĊĠĠĠ Ġprivate Ġvar Ġm Lift X Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Lift Y Ġ= Ġ 0 f ĊĊĠĠĠ Ġ// èµ· å§ĭ çĤ¹ ä½įç½® ĊĠĠĠ Ġprivate Ġvar Ġm Start X Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Start Y Ġ= Ġ 0 f ĊĊĠĠĠ Ġ// ä½į ç§» ĊĠĠĠ Ġprivate Ġvar Ġm Interval X Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġm Interval Y Ġ= Ġ 0 f ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Lift ( motion Event : ĠMotion Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Start X Ġ= Ġmotion Event . x ĊĠĠĠĠĠĠĠ Ġm Start Y Ġ= Ġmotion Event . y ĊĊĠĠĠĠĠĠĠ Ġm Child Layout List . forEach Indexed Ġ{ Ġindex , Ġchild Ġ-> ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Lift ( index : ĠInt , Ġview : ĠView , Ġmotion Event : ĠMotion Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// M Log . d ("$ index Ġ$ motion Event ") ĊĠĠĠĠĠĠĠ Ġm Operation View Ġ= Ġview Ġas ĠConstraint Layout ĊĠĠĠĠĠĠĠ Ġm Lift X Ġ= Ġmotion Event . raw X ĊĠĠĠĠĠĠĠ Ġm Lift Y Ġ= Ġmotion Event . raw Y Ġ- ĠView Utils . getStatus Bar Height ( context ) ĊĠĠĠĠĠĠĠ Ġm Interval X Ġ= Ġm Start X Ġ- Ġmotion Event . x ĊĠĠĠĠĠĠĠ Ġm Interval Y Ġ= Ġm Start Y Ġ- Ġmotion Event . y ĊĊĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĠView Utils . get Bitmap From View ( view ) ĊĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġval Ġtar Get Location Ġ= ĠInt Array ( 2 ) ĊĠĠĠĠĠĠĠ Ġview . getLocation On Screen ( tar Get Location ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! m Is Drawing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Anim Item View . setImage Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Anim Item View . x Ġ= Ġtar Get Location [ 0 ]. toFloat () Ġ- Ġm Interval X ĊĠĠĠĠĠĠĠ Ġm Anim Item View . y Ġ= Ġtar Get Location [ 1 ]. toFloat () Ġ- ĠView Utils . getStatus Bar Height ( context ) Ġ- Ġm Interval Y ĊĠĠĠĠĠĠĠ Ġ// æĺ¾ç¤º æ Ĥ¬ æµ ® æ¡Ĩ ĊĠĠĠĠĠĠĠ Ġshow View ( m Anim Item View ) ĊĠĠĠĠĠĠĠ Ġm Is Drawing Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// æĺ¾ç¤º æĵįä½ľ è§ĨåĽ¾ ĊĠĠĠĠĠĠĠ Ġshow Option View () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// åľ¨ çĪ¶ å¸ĥå±Ģ çļĦ åĽĽ ä¸ª è§Ĵ æĺ¾ç¤º æĵįä½ľ ç¬¦ æĮīéĴ® ĊĠĠĠ Ġprivate Ġfun Ġshow Option View () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Arrow List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow View ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Arrow Rect List . forEach Indexed Ġ{ Ġindex , Ġrect Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rect . contains ( m Lift X . toInt (), Ġm Lift Y . toInt ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Arrow List [ index ]. setImage Resource ( R . drawable . ic _ change ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Operation Index Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Arrow List [ index ]. setImage Resource ( m Arrow Res List [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// éĩįæĸ° æİĴåºı ĊĠĠĠ Ġ// åħĪ è¯ķ éªĮ åįķ ä¸Ģ çļĦ å·¦ åı³ åħ³ç³» ĊĠĠĠ Ġprivate Ġfun Ġon Option ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġconstraint Set : ĠConstraint Set Ġ= ĠConstraint Set () ĊĠĠĠĠĠĠĠ Ġconstraint Set . clone ( root _ layout ) ĊĊĠĠĠĠĠĠĠ Ġ// å·¦ Ġä¸Ĭ Ġ åı³ Ġä¸ĭ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åİŁ æĿ¥çļĦ å·¦ åı³ æĶ¹ ä¸º åĪ° ä¸Ģèµ· ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æī¾åĪ° åİŁ æĿ¥ å·¦ è¾¹ çº¦ æĿŁ çĪ¶ å¸ĥå±Ģ çļĦ view Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Layout List . forEach Indexed Ġ{ Ġindex , Ġchild Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlp : ĠLayout Params Ġ= Ġchild . layout Params Ġas ĠLayout Params Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġleft To Left Id Ġ= Ġlp . left To Left Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM Log . d (" index : Ġ" Ġ+ Ġindex ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM Log . d (" Ġleft Ġto Ġleft Ġ: Ġ" Ġ+ Ġlp . left To Left ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM Log . d (" Ġleft Ġto Ġright Ġ: Ġ" Ġ+ Ġlp . left To Right ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM Log . d (" Ġright Ġto Ġleft Ġ: Ġ" Ġ+ Ġlp . right To Left ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM Log . d (" Ġright Ġto Ġright Ġ: Ġ" Ġ+ Ġlp . right To Right ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( left To Left Id . equals ( 0 )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM Log . d (" å½ĵåīį æĵįä½ľ çļĦ :" Ġ+ Ġm Operation View !!. id ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM Log . d (" Ġ æī¾åĪ° çļĦ Ġ: Ġ" Ġ+ Ġchild . id ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// left Ġto Ġparent Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . connect ( m Operation View !!. id , Constraint Set . LEFT , Constraint Set . PARENT _ ID , Constraint Set . LEFT , 2 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . connect ( m Operation View !!. id , Constraint Set . RIGHT , child . id , Constraint Set . LEFT , 2 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . apply To ( root _ layout ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġleft Ġ= Ġm Child Layout List [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcenter Ġ= Ġm Child Layout List [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġright Ġ= Ġm Child Layout List [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . connect ( center . id , Constraint Set . LEFT , Constraint Set . PARENT _ ID , Constraint Set . LEFT , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . connect ( center . id , Constraint Set . RIGHT , left . id , Constraint Set . LEFT , 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . connect ( left . id , Constraint Set . LEFT , center . id , Constraint Set . RIGHT , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . connect ( left . id , Constraint Set . RIGHT , right . id , Constraint Set . LEFT , 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . connect ( right . id , Constraint Set . LEFT , left . id , Constraint Set . RIGHT , 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . connect ( right . id , Constraint Set . RIGHT , Constraint Set . PARENT _ ID , Constraint Set . RIGHT , 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . apply To ( root _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// å®ĮæĪĲ ä»¥ åĲİ éĩį ç½® m Operation Index ĊĠĠĠĠĠĠĠ Ġm Operation Index Ġ= Ġ- 1 ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// åľ¨ çĪ¶ å¸ĥå±Ģ çļĦ åĽĽ ä¸ª è§Ĵ æĺ¾ç¤º æĵįä½ľ ç¬¦ æĮīéĴ® ĊĠĠĠ Ġprivate Ġfun Ġhide Option View () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Arrow List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide View ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Finish Lift () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Is Drawing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ// åĪ¤æĸŃ æŃ¤ æĹ¶çļĦ çĬ¶æĢģ ĊĠĠĠĠĠĠĠ Ġhide View ( m Anim Item View ) ĊĠĠĠĠĠĠĠ Ġhide Option View () ĊĠĠĠĠĠĠĠ Ġif Ġ( m Operation View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Operation View !!. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( m Operation Index Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Option ( m Operation Index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ç§»éĻ¤ view ĊĠĠĠ Ġprivate Ġfun Ġhide View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ġcontains ( view )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove View ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// æĺ¾ç¤º view ĊĠĠĠ Ġprivate Ġfun Ġshow View ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlp Ġ= ĠLayout Params ( LayoutParams . WRAP _ CONTENT , ĠLayout Params . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġhide View ( view ) ĊĠĠĠĠĠĠĠ Ġadd View ( view , Ġlp ) ĊĠĠĠ Ġ} ĊĊ Ċ }