package Ġcom . ng . ng u ilib . layout Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . ng . ng u ilib . R Ċ Ċ /** Ċ Ġ* Ġæı ı è¿° : Ġæ Ļ ® éĢļ èģĶ åĬ¨ æ»ĳ åĬ¨ çīĪæľ¬ Ċ Ġ* Ġ@ author ĠJ zn Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 9 / 9 Ċ Ġ*/ Ċ class ĠZoom Layout Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: ĠLinearLayout ( context , Ġattrs ) Ġ{ ĊĠĠĠ Ġ// åŃĲ layout åĪĹè¡¨ ĊĠĠĠ Ġprivate Ġvar Ġm Child Layout List : ĠArrayList < View > Ġ= Ġarray ListOf () ĊĠĠĠ Ġprivate Ġvar Ġm Interval List : ĠArrayList < View > Ġ= Ġarray ListOf () ĊĊĠĠĠ Ġ// èµ· å§ĭ çĤ¹ ä½įç½® ĊĠĠĠ Ġ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 ĊĊĠĠĠ Ġ// åĪĨ åī² çº¿ æĺ¯åĲ¦ æ·»åĬł è¿ĩ ĊĠĠĠ Ġprivate Ġvar Ġhad Add Ġ= Ġfalse ĊĊĠĠĠ Ġ// ä¿ĿåŃĺ æ¯ıä¸ª åŃĲ view çļĦ å®½åº¦ ĊĠĠĠ Ġprivate Ġvar Ġm Child Width List : ĠArrayList < Int > Ġ= Ġarray ListOf () ĊĠĠĠ Ġprivate Ġvar Ġm Child Height List : ĠArrayList < Int > Ġ= Ġarray ListOf () ĊĊĠĠĠ Ġ// åıĺåĮĸ ä¸ŃçļĦ åŃĲ view å®½åº¦ ĊĠĠĠ Ġprivate Ġvar Ġm Running X List : ĠArrayList < Int > Ġ= Ġarray ListOf () ĊĠĠĠ Ġprivate Ġvar Ġm Running Y List : ĠArrayList < Int > Ġ= Ġarray ListOf () ĊĊĊĠĠĠ Ġ// params ĊĠĠĠ Ġprivate Ġvar Ġm Interval LineWidth Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġm Interval Line Color Ġ= Ġ 1 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġta Ġ= Ġcontext . obtain Styled Attributes ( attrs , ĠR . style able . Zoom Layout ) ĊĠĠĠĠĠĠĠ Ġm Interval LineWidth Ġ= Ġcontext . resources . get Dimension Pixel Offset ( ta . getResource Id ( R . style able . Zoom Layout _ Interval LineWidth , ĠR . dim en . dd 1 0 )) ĊĠĠĠĠĠĠĠ Ġm Interval Line Color Ġ= Ġta . getColor ( R . style able . Zoom Layout _ Interval Line Color , ĠColor . BLACK ) ĊĠĠĠĠĠĠĠ Ġta . recycle () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Child Layout List . size Ġ!= Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Child List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Child Size List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Split () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠmaxSize Ġ= Ġif Ġ( meas ured Height Ġ> Ġmeasured Width ) Ġmeasured Height Ġelse Ġmeasured Width ĊĠĠĠĠĠĠĠ Ġ// ä¿®æŃ£ åĪĨ åī² çº¿ å®½åº¦ ĊĠĠĠĠĠĠĠ Ġm Interval List . forEach Indexed Ġ{ Ġ_, Ġchild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlp : ĠViewGroup . LayoutParams Ġ= Ġchild . layout Params ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ== ĠH ORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlp . height Ġ= ĠmaxSize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( orientation Ġ== ĠV ERT ICAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlp . width Ġ= ĠmaxSize ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . layout Params Ġ= Ġlp ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// åĪ·æĸ° åŃĲ view æķ°ç»Ħ ĊĠĠĠ Ġprivate Ġfun Ġrefresh Child List () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Child Layout List . clear () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild View : ĠView Ġ= Ġget Child At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Layout List . add ( child View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// åĪ·æĸ° åŃĲ view Ġsize ĊĠĠĠ Ġprivate Ġfun Ġrefresh Child Size List () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Child Width List . clear () ĊĠĠĠĠĠĠĠ Ġm Child Layout List . forEach Indexed Ġ{ Ġ_, Ġchild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Width List . add ( child . meas ured Width ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Running X List Ġ= Ġm Child Width List ĊĠĠĠĠĠĠĠ Ġm Child Height List . clear () ĊĠĠĠĠĠĠĠ Ġm Child Layout List . forEach Indexed Ġ{ Ġ_, Ġchild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Height List . add ( child . meas ured Height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Running Y List Ġ= Ġm Child Height List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// åľ¨ åŃĲ view ä¸Ń è®¾ç½® æĵįä½ľ åĪĨ åī² çº¿ ĊĠĠĠ Ġprivate Ġfun Ġadd Split () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Child Layout List . size Ġ== Ġchild Count Ġ&& Ġ! had Add ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åľ¨ åŃĲ view çļĦ éĹ´ è·Ŀ ä¸Ń æ·»åĬł æĵįä½ľ view ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Layout List . forEach Indexed Ġ{ Ġindex , Ġchild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġm Child Layout List . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Interval Line ( index , Ġchild ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhad Add Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// å¢ŀåĬł åŀ Ĥ çĽ´ åĪĨ åī² çº¿ ĊĠĠĠ Ġprivate Ġfun Ġadd Interval Line ( number : ĠInt , Ġchild : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinter Val View Ġ= ĠView ( context ) ĊĠĠĠĠĠĠĠ Ġinter Val View . set BackgroundColor ( m Interval Line Color ) ĊĠĠĠĠĠĠĠ Ġvar Ġlp : ĠViewGroup . LayoutParams Ġ= ĠLayout Params ( meas ured Width , Ġm Interval LineWidth ) ĊĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ== ĠH ORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlp Ġ= ĠLayout Params ( m Interval LineWidth , ĠViewGroup . LayoutParams . MATCH _ PARENT ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( orientation Ġ== ĠV ERT ICAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlp Ġ= ĠLayout Params ( ViewGroup . LayoutParams . MATCH _ PARENT , Ġm Interval LineWidth ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinter Val View . layout Params Ġ= Ġlp ĊĊĠĠĠĠĠĠĠ Ġval Ġreal Index Ġ= Ġ 1 Ġ+ Ġnumber Ġ* Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġinter Val View . setOn Touch Listener Ġ{ Ġview , Ġmotion Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( motion Event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Start X Ġ= Ġmotion Event . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Start Y Ġ= Ġmotion Event . y ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Child Size List () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĺ² æŃ¢ äºĭä»¶ è¢« çĪ¶ å¸ĥå±Ģ æĭ ¦ æĪª ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent . request Dis allow Intercept Touch Event ( true ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Child Size List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . perform Click () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Interval X Ġ= Ġm Start X Ġ- Ġmotion Event . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Interval Y Ġ= Ġm Start Y Ġ- Ġmotion Event . y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ== ĠH ORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Child Value Legal ( m Running X List [ real Index Ġ- Ġ 1 ] Ġ- Ġm Interval X . toInt (), Ġreal Index Ġ- Ġ 1 ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Child Value Legal ( m Running X List [ real Index Ġ+ Ġ 1 ] Ġ+ Ġm Interval X . toInt (), Ġreal Index Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running X List [ real Index Ġ- Ġ 1 ] Ġ-= Ġm Interval X . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running X List [ real Index Ġ+ Ġ 1 ] Ġ+= Ġm Interval X . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ èģĶ åĬ¨ è°ĥæķ´ å·¦ è¾¹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Child Value Legal ( m Running X List [ real Index Ġ- Ġ 1 ] Ġ- Ġm Interval X . toInt (), Ġreal Index Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . START ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfix Multi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( real Index Ġ- Ġ 2 Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 .. real Index Ġ- Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĻéĩĮ è¦ģ åĪ¤æĸŃ æĺ¯åĲ¦ æĺ¯ åĪĨ åī² çº¿ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ% Ġ 2 Ġ== Ġ 0 Ġ&& Ġis Child Value Legal ( m Running X List [ index ] Ġ- Ġm Interval X . toInt (), Ġindex )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running X List [ index ] Ġ-= Ġm Interval X . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfix Multi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running X List [ real Index Ġ+ Ġ 1 ] Ġ+= Ġm Interval X . toInt () Ġ* Ġfix Multi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// èģĶ åĬ¨ è°ĥæķ´ åı³ è¾¹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Child Value Legal ( m Running X List [ real Index Ġ+ Ġ 1 ] Ġ+ Ġm Interval X . toInt (), Ġreal Index Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . END ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfix Multi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ( real Index Ġ+ Ġ 2 ) Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ% Ġ 2 Ġ== Ġ 0 Ġ&& Ġis Child Value Legal ( m Running X List [ index ] Ġ+ Ġm Interval X . toInt (), Ġindex )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running X List [ index ] Ġ+= Ġm Interval X . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfix Multi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running X List [ real Index Ġ- Ġ 1 ] Ġ-= Ġm Interval X . toInt () Ġ* Ġfix Multi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( orientation Ġ== ĠV ERT ICAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Child Value Legal ( m Running Y List [ real Index Ġ- Ġ 1 ] Ġ- Ġm Interval Y . toInt (), Ġreal Index Ġ- Ġ 1 ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Child Value Legal ( m Running Y List [ real Index Ġ+ Ġ 1 ] Ġ+ Ġm Interval Y . toInt (), Ġreal Index Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running Y List [ real Index Ġ- Ġ 1 ] Ġ-= Ġm Interval Y . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running Y List [ real Index Ġ+ Ġ 1 ] Ġ+= Ġm Interval Y . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ èģĶ åĬ¨ è°ĥæķ´ ä¸ĬéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Child Value Legal ( m Running Y List [ real Index Ġ- Ġ 1 ] Ġ- Ġm Interval Y . toInt (), Ġreal Index Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . TOP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfix Multi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( real Index Ġ- Ġ 2 Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 .. real Index Ġ- Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ% Ġ 2 Ġ== Ġ 0 Ġ&& Ġis Child Value Legal ( m Running Y List [ index ] Ġ- Ġm Interval Y . toInt (), Ġindex )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running Y List [ index ] Ġ-= Ġm Interval Y . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfix Multi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running Y List [ real Index Ġ+ Ġ 1 ] Ġ+= Ġm Interval Y . toInt () Ġ* Ġfix Multi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ èģĶ åĬ¨ è°ĥæķ´ ä¸ĭéĿ¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Child Value Legal ( m Running Y List [ real Index Ġ+ Ġ 1 ] Ġ+ Ġm Interval Y . toInt (), Ġreal Index Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . BOTTOM ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfix Multi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ( real Index Ġ+ Ġ 2 ) Ġuntil Ġchild Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ% Ġ 2 Ġ== Ġ 0 Ġ&& Ġis Child Value Legal ( m Running Y List [ index ] Ġ+ Ġm Interval Y . toInt (), Ġindex )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running Y List [ index ] Ġ+= Ġm Interval Y . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfix Multi ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Running Y List [ real Index Ġ- Ġ 1 ] Ġ-= Ġm Interval Y . toInt () Ġ* Ġfix Multi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Layout List . forEach Indexed Ġ{ Ġindex , Ġchild Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Lp : ĠLayout Params Ġ= Ġchild . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// child Lp . weight Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ== ĠH ORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Lp . width Ġ= Ġm Running X List [ index ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( orientation Ġ== ĠV ERT ICAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild Lp . height Ġ= Ġm Running Y List [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchild . layout Params Ġ= Ġchild Lp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĺ² æŃ¢ å·¦ è¶Ĭ çķĮ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Child Layout List . size Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Layout List [ 0 ]. x Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Interval List . add ( inter Val View ) ĊĠĠĠĠĠĠĠ Ġadd View ( inter Val View , Ġreal Index , Ġlp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Child Value Legal ( value : ĠInt , Ġindex : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmin Zoom Ġ= Ġif Ġ( orientation Ġ== ĠH ORIZONTAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Layout List [ index ]. minimum Width ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Child Layout List [ index ]. minimum Height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue Ġ> Ġmin Zoom ĊĠĠĠ Ġ} Ċ Ċ }