package Ġcom . p wj . record Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Gesture Detector Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . p wj . fragment . Main Fragment Activity Ċ import Ġcom . p wj . h encoder . Main H en Coder Activity Ċ import Ġcom . p wj . log cat . Log cat Dialog Ċ import Ġcom . p wj . record . bean . Person Ċ import Ġcom . p wj . record . ext . show Toast Ċ import Ġcom . p wj . record . ext . start Ext Activity Ċ import Ġcom . p wj . record . ui .* Ċ import Ġcom . p wj . record . ui . status bar . Main Status Activity Ċ import Ġcom . p wj . record . ui . surface view . Main Surface Activity Ċ import Ġcom . p wj . record . ui . tools . Tools Activity Ċ import Ġcom . p wj . record . view . expand able . Expand able Activity Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlin . properties . Deleg ates Ċ Ċ /** Ċ Ġ* Ġ ä¸» åħ¥ åı£ Ċ Ġ* Ġtodo : Ċ Ġ* ĠĠĠĠĠ Ġ æ³¨è§£ åĽŀ é¡ ¾ Ċ Ġ* ĠĠĠĠĠ Ġjet pack Ċ Ġ* ĠĠĠĠĠ Ġsw ip back Ċ Ġ* ĠĠĠĠĠ Ġnotification Ċ Ġ* ĠĠĠĠĠ Ġsurface View Ċ Ġ* ĠĠĠĠĠ Ġlog cat Ġdialog Ġfloat view Ċ Ġ* ĠĠĠĠĠ Ġfragment Ġactivity Ġ åŁº ç±» Ċ Ġ* ĠĠĠĠĠ ĠJ unit æµĭè¯ķ Ċ Ġ* Ċ Ġ*/ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity ( R . layout . activity _ main ), ĠView . OnClickListener Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġrecord . setOn Touch Listener Ġ{ Ġ_, Ġevent Ġ-> Ġgesture Detector . on Touch Event ( event ) Ġ} ĊĠĠĠĠĠĠĠ Ġrecord . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog cat Dialog ( this . application Context ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn Long ClickListener Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcode 0 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcode 1 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcode 2 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcode 3 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcode 4 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcode 5 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcode 6 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcode 7 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcode 8 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcode 9 . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġcode 1 0 . setOnClickListener ( this ) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v ?. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 0 Ġ-> Ġstart Ext Activity < Main Status Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 1 Ġ-> Ġstart Ext Activity < Expand able Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Pair < String , ĠAny >> (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Pair (" array <* >", ĠArray < Person >( 3 ) Ġ{ Ġi : ĠInt Ġ-> ĠPerson ( i . toString ()) Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Pair (" ArrayList <* >", ĠArrayList < Person >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Person (" 1 0 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Person (" 1 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Person (" 1 2 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Person (" 1 3 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Pair (" bundle ", ĠBundle (). putString (" bundle ", Ġ" bundle Result "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ext Activity < Ext Test Activity >( values Ġ= Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ext Activity < Activity Result New Api Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ext Activity < ViewPager Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 5 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ext Activity < DSL Anim Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ext Activity < Main UI Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 7 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ext Activity < Tools Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ext Activity < Main Fragment Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 9 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ext Activity < Main H en Coder Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . code 1 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ext Activity < Main Surface Activity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĪ©çĶ¨ å§Ķ æīĺ å®ĮæĪĲ åıĮ åĩ» back éĢĢåĩº ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġback Pressed Time Ġby ĠDeleg ates . observable ( 0 L ) Ġ{ Ġpre , Ġold , Ġnew Ġ-> ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ä¸¤ æ¬¡ æĹ¶éĹ´ éĹ´ éļĶ å°ı äºİ 2 ç§Ĵ å°± éĢĢåĩº ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġif Ġ( new Ġ- Ġold Ġ< Ġ 2 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast (" åĨį æĮī ä¸Ģæ¬¡ è¿ĶåĽŀ éĶ® éĢĢåĩº ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġback Pressed Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġgesture Detector : ĠGest ure Detector Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠGest ure Detector ( this @ MainActivity , Ġobject Ġ: ĠGest ure Detector . Simple On Gesture Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ åıĳçĶŁ ç¡® å®ļçļĦ åįķ åĩ» æĹ¶ æī§è¡Į ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Single Tap Confirmed ( e : ĠMotion Event ?): ĠBoolean Ġ{ Ġ// åįķ åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast (" è¿Ļæĺ¯ åįķ åĩ» äºĭä»¶ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Single Tap Confirmed ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ åıĮ åĩ» åıĳçĶŁ æĹ¶çļĦ éĢļçŁ¥ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Double Tap ( e : ĠMotion Event ?): ĠBoolean Ġ{ Ġ// åıĮ åĩ» äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast (" è¿Ļæĺ¯ åıĮ åĩ» äºĭä»¶ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Double Tap ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ åıĮ åĩ» æīĭ åĬ¿ è¿ĩç¨ĭä¸Ń åıĳçĶŁ çļĦ äºĭä»¶ ï¼Į åĮħæĭ¬ æĮī ä¸ĭ ãĢģ ç§»åĬ¨ åĴĮ æĬ ¬ èµ· äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġe ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Double Tap Event ( e : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Double Tap Event ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĤ¹åĩ» å¤ĸéĥ¨ Ġ è¾ĵåħ¥ æ¡Ĩ æ¶Ī å¤± ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdispatch Touch Event ( ev : ĠMotion Event ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ev ?. action Ġ== ĠMotion Event . ACTION _ DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġcurrent Focus ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Should Hide Keyboard ( v , Ġev )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimm Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimm . hide Soft Input From Window ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ?. window Token , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Method Manager . HIDE _ NOT _ ALWAYS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . dispatch Touch Event ( ev ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Should Hide Keyboard ( v : ĠView ?, Ġevent : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( v Ġ!= Ġnull Ġ&& Ġv Ġis ĠEditText ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġint ArrayOf ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . getLocation In Window ( l ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġl [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġl [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġtop Ġ+ Ġv . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġleft Ġ+ Ġv . width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ!( event . x Ġ> Ġleft Ġ&& Ġevent . x Ġ< Ġright ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġevent . y Ġ> Ġtop Ġ&& Ġevent . y Ġ< Ġbottom ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ