package Ġtop . it ning . yun shu class schedule . ui . activity Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Sparse Array Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroidx . annotation . Requires Permission Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . widget . AppCompat Spinner Ċ import Ġandroidx . appcompat . widget . Switch Compat Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . view . Gravity Compat Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . get keep safe . tap target view . Tap Target Ċ import Ġcom . get keep safe . tap target view . Tap Target View Ċ import Ġcom . google . android . material . navigation . Navigation View Ċ import Ġcom . jay goo . widget . On Range Changed Listener Ċ import Ġcom . jay goo . widget . Range Seek Bar Ċ import Ġcom . tencent . bug ly . crash report . Crash Report Ċ import Ġcom . zhihu . mat isse . Mat isse Ċ import Ġcom . zhihu . mat isse . MimeType Ċ import Ġcom . zhihu . mat isse . internal . entity . Capture Strategy Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . android . synt hetic . main . app _ bar _ main .* Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode Ċ import Ġtop . it ning . yun shu class schedule . R Ċ import Ġtop . it ning . yun shu class schedule . common . App Ċ import Ġtop . it ning . yun shu class schedule . common . Base Activity Ċ import Ġtop . it ning . yun shu class schedule . common . Constant Pool Ċ import Ġtop . it ning . yun shu class schedule . entity . Event Entity Ċ import Ġtop . it ning . yun shu class schedule . ui . fragment . Check Score Fragment Ċ import Ġtop . it ning . yun shu class schedule . ui . fragment . Class Schedule Fragment Ċ import Ġtop . it ning . yun shu class schedule . ui . fragment . setting . Settings Fragment Ċ import Ġtop . it ning . yun shu class schedule . util . Date Utils Ċ import Ġtop . it ning . yun shu class schedule . util . FileUtils Ċ import Ġtop . it ning . yun shu class schedule . util . G lide 4 Engine Ċ import Ġtop . it ning . yun shu class schedule . util . Theme Change Util Ċ import Ġjava . text . Message Format Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ ä¸» æ´»åĬ¨ Ċ Ġ* Ċ Ġ* Ġ@ author Ġit ning Ċ Ġ*/ Ċ class ĠMainActivity Ġ: ĠBase Activity (), ĠNavigation View . On Navigation ItemSelected Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfragment Sparse Array : ĠSparse Array < Fragment > ĊĠĠĠ Ġprivate Ġvar Ġfirst Pressed Time : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdrawer Switch : ĠSwitch Compat ĊĠĠĠ Ġprivate Ġvar Ġtemp NumberOf Week Ġ= Ġ" 1 " ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġfragment Ġæĺ¯åĲ¦ æ¶Īè´¹ è¿ĶåĽŀ äºĭä»¶ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ å·² æ¶Īè´¹ è¿ĶåĽŀ çľŁ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate // æŁ¥è¯¢ æĪĲ ç» © é¡µéĿ¢ ĊĠĠĠ Ġval Ġis Consumption : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . frame _ container ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( f Ġas ? ĠCheck Score Fragment )?. event Trigger () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTheme Change Util . change MainActivity Theme ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). register ( this ) ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġnew User Study () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġtemp NumberOf Week Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ). getString ( Settings Fragment . NOW _ WEEK _ NUM , Ġ" 1 ") !! ĊĠĠĠĠĠĠĠ Ġfragment Sparse Array Ġ= ĠSparse Array () ĊĠĠĠĠĠĠĠ Ġfragment Sparse Array . put ( R . id . nav _ class _ schedule , ĠClass Schedule Fragment ()) ĊĠĠĠĠĠĠĠ Ġfragment Sparse Array . put ( R . id . nav _ check _ score , ĠCheck Score Fragment ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ è§ĨåĽ¾ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® ä¸» æłĩé¢ĺ ĊĠĠĠĠĠĠĠ Ġtoolbar . title Ġ= ĠACTION _ BAR _ TITLE _ FORMAT . format ( Date ()) ĊĠĠĠĠĠĠĠ Ġtoolbar . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ). getString ( Settings Fragment . NOW _ WEEK _ NUM , Ġ" 1 ") !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp NumberOf Week Ġ!= Ġnow ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp NumberOf Week Ġ= Ġnow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Event Entity ( Constant Pool . Int . CLASS _ WEEK _ CHANGE , Ġtemp NumberOf Week )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" åĽŀ åĪ° å½ĵåīį åĳ¨ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtoolbar . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Compat Spinner Ġ= ĠAppCompat Spinner ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġ 1 .. 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Compat Spinner . adapter Ġ= ĠArray Adapter ( this , Ġandroid . R . layout . simple _ expand able _ list _ item _ 1 , Ġlist . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Compat Spinner . setSelection ( temp NumberOf Week . toInt () Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" å¿«éĢŁ è·³è½¬ åĪ° åħ¶å®ĥ åĳ¨ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( app Compat Spinner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" ç¡®å®ļ ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app Compat Spinner . selected Item . toString () Ġ!= Ġtemp NumberOf Week ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp NumberOf Week Ġ= Ġapp Compat Spinner . selected Item . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Event Entity ( Constant Pool . Int . CLASS _ WEEK _ CHANGE , Ġtemp NumberOf Week )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® å¯¼èĪª ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ ĠTheme Change Util . init Color ( this , Ġdrawer _ layout ) ĊĠĠĠĠĠĠĠ Ġval Ġtoggle Ġ= ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġdrawer _ layout , Ġtoolbar , ĠR . string . navigation _ drawer _ open , ĠR . string . navigation _ drawer _ close ) ĊĠĠĠĠĠĠĠ Ġdrawer _ layout . add Drawer Listener ( toggle ) ĊĠĠĠĠĠĠĠ Ġdrawer _ layout . add Drawer Listener ( object Ġ: ĠDraw er Layout . Drawer Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Drawer Slide (@ NonNull Ġdrawer View : ĠView , Ġslide Offset : ĠFloat ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Drawer Opened (@ NonNull Ġdrawer View : ĠView ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Drawer Closed (@ NonNull Ġdrawer View : ĠView ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Drawer StateChanged ( newState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Method Manager Ġ= Ġget System Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Method Manager . hide Soft Input From Window ( window . decor View . window Token , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġtoggle . sync State () ĊĠĠĠĠĠĠĠ Ġ// é»ĺè®¤ éĢī ä¸Ń ç¬¬ä¸Ģ é¡¹ ĊĠĠĠĠĠĠĠ Ġnav _ view . menu . getItem ( 0 ). isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġdrawer Switch Ġ= Ġnav _ view . menu . find Item ( R . id . nav _ day _ night ). action View Ġas ĠSwitch Compat ĊĠĠĠĠĠĠĠ Ġif Ġ( Theme Change Util . is Change ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Switch . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrawer Switch . setOn Checked ChangeListener Ġ{ Ġ_, Ġ_ Ġ-> ĠTheme Change Util . change Night Mode ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġnav _ view . set Navigation ItemSelected Listener ( this ) ĊĠĠĠĠĠĠĠ ĠApp . shared Preferences . edit (). put Int ( Constant Pool . Str . LAST _ DATE . get (), ĠCalendar . getInstance (). get ( Calendar . DATE )). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĸ° çĶ¨æĪ· å¼ķ å¯¼ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġnew User Study () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( App . shared Preferences . getBoolean ( Constant Pool . Str . NEW _ USER _ IS _ ST UD Y . get (), Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġtoolbar Title : ĠTextView ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. toolbar . child Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchild Ġ= Ġtoolbar . getChild At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( child Ġis ĠTextView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar Title Ġ= Ġchild ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( toolbar Title Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ap Target View . show For ( this , ĠT ap Target . for View ( toolbar Title , Ġ" éķ¿ æĮī æĹ¶éĹ´ æłĩé¢ĺ åı¯ä»¥ è·³è½¬ åĪ° åħ¶å®ĥ åĳ¨ ï¼Į åľ¨ åħ¶å®ĥ åĳ¨ æĮī ä¸Ģæ¬¡ æłĩé¢ĺ åį³åı¯ åĽŀ åĪ° å½ĵåīį åĳ¨ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. outer Circle Color ( R . color . color Accent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. target Radius ( 8 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠT ap Target View . Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Target Dis missed ( view : ĠT ap Target View ?, Ġuser Initi ated : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . shared Preferences . edit (). put Boolean ( Constant Pool . Str . NEW _ USER _ IS _ ST UD Y . get (), Ġtrue ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Target Dis missed ( view , Ġuser Initi ated ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġoverride Ġfun Ġon Message Event ( event Entity : ĠEvent Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event Entity . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstant Pool . Int . TIME _ TICK _ CHANGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Date Utils . isNew Day Ġ|| Ġevent Entity . msg Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" time Ġtick Ġevent Ġ, Ġnow Ġnew ĠClass Schedule Fragment ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Sparse Array . remove ( R . id . nav _ class _ schedule ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Sparse Array . put ( R . id . nav _ class _ schedule , ĠClass Schedule Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( support FragmentManager . find Fragment ById ( R . id . frame _ container ) Ġis ĠClass Schedule Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . frame _ container , Ġfragment Sparse Array . get ( R . id . nav _ class _ schedule )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Allow ing State Loss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstant Pool . Int . APP _ COLOR _ CHANGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" app Ġcolor Ġchange Ġ, Ġnow Ġaf resh Ġview ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Change Util . init Color ( this , Ġdrawer _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment Sparse Array . clear () ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). unregister ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . frame _ container ) ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġis ĠClass Schedule Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). remove ( fragment Sparse Array . get ( R . id . nav _ class _ schedule )). commit Allow ing State Loss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . frame _ container ) ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ== Ġnull Ġ|| Ġfragment Ġis ĠClass Schedule Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclass Schedule Fragment Ġ= Ġfragment Sparse Array . get ( R . id . nav _ class _ schedule ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( class Schedule Fragment . is Added ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( class Schedule Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . frame _ container , Ġclass Schedule Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Allow ing State Loss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// è®¾ç½® ä¸» æłĩé¢ĺ ĊĠĠĠĠĠĠĠ Ġtoolbar . title Ġ= ĠACTION _ BAR _ TITLE _ FORMAT . format ( Date ()) ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdrawer Ġ= ĠfindViewById < Drawer Layout >( R . id . drawer _ layout ) ĊĠĠĠĠĠĠĠ Ġif Ġ( drawer . is Drawer Open ( Gravity Compat . START )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Consumption ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ- Ġfirst Pressed Time Ġ< ĠConstant Pool . Int . EXIT _ DELAY . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Task To Back ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" åĨį æĮī ä¸Ģæ¬¡ éĢĢåĩº ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Pressed Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . action _ show _ teacher _ info ). title Ġ= Ġif Ġ( App . shared Preferences . getBoolean ( Constant Pool . Str . TE AC HER _ INFO _ STATUS . get (), Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" éļĲèĹı æİĪ è¯¾ æķĻ å¸Ī " ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" æĺ¾ç¤º æİĪ è¯¾ æķĻ å¸Ī " ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// èıľåįķ åĽŀè°ĥ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ set _ text _ size Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Week Fragment Font () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ set _ background _ image Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Permission ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Select Image Activity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ show _ teacher _ info Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( App . shared Preferences . getBoolean ( Constant Pool . Str . TE AC HER _ INFO _ STATUS . get (), Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . shared Preferences . edit (). put Boolean ( Constant Pool . Str . TE AC HER _ INFO _ STATUS . get (), Ġfalse ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . title Ġ= Ġ" æĺ¾ç¤º æİĪ è¯¾ æķĻ å¸Ī " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . shared Preferences . edit (). put Boolean ( Constant Pool . Str . TE AC HER _ INFO _ STATUS . get (), Ġtrue ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . title Ġ= Ġ" éļĲèĹı æİĪ è¯¾ æķĻ å¸Ī " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Event Entity ( Constant Pool . Int . REFRESH _ WEEK _ FRAGMENT _ DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ last _ week Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp NumberOf Week Ġ== Ġ" 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġtemp NumberOf Week . toInt () Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp NumberOf Week Ġ= Ġt . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Event Entity ( Constant Pool . Int . CLASS _ WEEK _ CHANGE , Ġtemp NumberOf Week )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ next _ week Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp NumberOf Week Ġ== Ġ" 5 0 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġtemp NumberOf Week . toInt () Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp NumberOf Week Ġ= Ġt . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Event Entity ( Constant Pool . Int . CLASS _ WEEK _ CHANGE , Ġtemp NumberOf Week )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĺ¾ç¤º å¼¹ çªĹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Dialog To User () Ġ{ ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ). setTitle (" éľĢè¦ģ å¤ĸ ç½® åŃĺåĤ¨ æĿĥéĻĲ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" è¯· æİĪ äºĪ å¤ĸ ç½® åŃĺåĤ¨ æĿĥéĻĲ , æīį èĥ½å¤Ł æĽ´ æį¢ èĥĮæĻ¯ åĽ¾çīĩ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" ç¡®å®ļ ") Ġ{ Ġ_, Ġ_ Ġ-> ĠActivity Compat . request Permissions ( this , ĠarrayOf ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ), ĠREQUEST _ CODE ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġ@ NonNull Ġpermissions : ĠArray < String >, Ġ@ NonNull Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgranted Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Results . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgranted Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gr anted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Permission ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Select Image Activity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ). setTitle (" éľĢè¦ģ å¤ĸ ç½® åŃĺåĤ¨ æĿĥéĻĲ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage (" è¯· æİĪ äºĪ å¤ĸ ç½® åŃĺåĤ¨ æĿĥéĻĲ , æīį èĥ½å¤Ł æĽ´ æį¢ èĥĮæĻ¯ åĽ¾çīĩ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" ç¡®å®ļ ") Ġ{ Ġ_, Ġ_ Ġ-> ĠstartActivity For Result ( Intent ( Settings . ACTION _ APPLICATION _ DETAILS _ SETTINGS , ĠUri . from Parts (" package ", ĠpackageName , Ġnull )), ĠSET TING _ REQUEST _ CODE ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button (" åıĸæ¶Ī ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ£Ģ æŁ¥ æĿĥéĻĲ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ æĿĥéĻĲ éĢļè¿ĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Permission (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Activity Compat . check Self Permission ( this , ĠManifest . permission . READ _ EXTERNAL _ STORAGE ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED Ġ|| ĠActivity Compat . check Self Permission ( this , ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . should Show Request Permission R ationale ( this , ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog To User () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ), ĠREQUEST _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¼ĢåĲ¯ éĢīæĭ© åĽ¾çīĩ Activity ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Requires Permission ( all Of Ġ= Ġ[ Manifest . permission . READ _ EXTERNAL _ STORAGE , ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ]) ĊĠĠĠ Ġprivate Ġfun Ġstart Select Image Activity () Ġ{ ĊĠĠĠĠĠĠĠ ĠMat isse . from ( this @ MainActivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĽ¾çīĩ ç±»åŀĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. choose ( MimeType . of ( MimeType . JPEG , ĠMime Type . PNG , ĠMime Type . B MP )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// true : éĢī ä¸Ń åĲİ æĺ¾ç¤º æķ°åŃĹ ; false : éĢī ä¸Ń åĲİ æĺ¾ç¤º å¯¹ åı· ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. count able ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åı¯ éĢī çļĦ æľĢå¤§ æķ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. max Selectable ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢīæĭ© çħ§ çīĩ æĹ¶ ï¼Į æĺ¯åĲ¦ æĺ¾ç¤º æĭ į çħ§ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. capture ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åıĤæķ° 1 Ġtrue è¡¨ç¤º æĭ į çħ§ åŃĺåĤ¨ åľ¨ åħ± æľī çĽ®å½ķ ï¼Į false è¡¨ç¤º åŃĺåĤ¨ åľ¨ ç§ģ æľī çĽ®å½ķ ï¼Ľ åıĤæķ° 2 ä¸İ ĠAndroid Manifest ä¸Ń author ities åĢ¼ çĽ¸åĲĮ ï¼Į çĶ¨äºİ éĢĤ éħį 7 . 0 ç³»ç»Ł Ġ å¿ħé¡» è®¾ç½® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. capture Strategy ( Capture Strategy ( true , Ġ" top . it ning . yun shu class schedule . file Provider ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĽ¾çīĩ åĬłè½½ å¼ķ æĵ İ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. image Engine ( G lide 4 Engine ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. theme ( com . zhihu . mat isse . R . style . Mat isse _ Dr ac ula ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Result ( REQUEST _ CODE _ CH OOSE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ CODE _ CH OOSE Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMat isse . obtain Result ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" the Ġresult Ġuri :" Ġ+ Ġresult [ 0 ]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . transfer File ( this , Ġresult [ 0 ], Ġ" background _ img ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" èĥĮæĻ¯ åĽ¾çīĩ è®¾ç½® å¤±è´¥ ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrash Report . post Cat ched Exception ( Throwable (" background Ġimage Ġset Ġfailure ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠSET TING _ REQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Permission ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Select Image Activity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæĽ´ æĶ¹ æľ¬ åĳ¨ è¯¾ç¨ĭ åŃĹ ä½ĵ å¤§å°ı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġchange Week Fragment Font () Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Inf late Params ") ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( this ). inflate ( R . layout . view _ range , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġtv Font Preview Ġ= Ġview . findViewById < TextView >( R . id . tv _ font _ preview ) ĊĠĠĠĠĠĠĠ Ġval Ġset Font Ġ= ĠApp . shared Preferences . get Float ( Constant Pool . Str . WEEK _ FONT _ SIZE . get (), Ġ 1 2 f ) ĊĠĠĠĠĠĠĠ Ġtv Font Preview . text Ġ= ĠMessage Format . format (" åŃĹ ä½ĵ å¤§å°ı :{ 0 }", Ġset Font ) ĊĠĠĠĠĠĠĠ Ġtv Font Preview . text Size Ġ= Ġset Font ĊĠĠĠĠĠĠĠ Ġval Ġbubble Seek Bar Ġ= Ġview . findViewById < Range Seek Bar >( R . id . seek Bar ) ĊĠĠĠĠĠĠĠ Ġbubble Seek Bar . setValue ( setFont ) ĊĠĠĠĠĠĠĠ Ġvar Ġsize Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġbubble Seek Bar . setOn Range Changed Listener ( object Ġ: ĠOn Range Changed Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Use Property Access Syntax ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Range Changed ( view : ĠRange Seek Bar , Ġleft Value : ĠFloat , Ġright Value : ĠFloat , Ġis From User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Font Preview . text Ġ= ĠMessage Format . format (" åŃĹ ä½ĵ å¤§å°ı :{ 0 }", Ġleft Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Font Preview . text Size Ġ= Ġleft Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġleft Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( view : ĠRange Seek Bar , Ġis Left : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( view : ĠRange Seek Bar , Ġis Left : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . shared Preferences . edit (). put Float ( Constant Pool . Str . WEEK _ FONT _ SIZE . get (), Ġsize ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" æĽ´æĶ¹ åŃĹ ä½ĵ å¤§å°ı ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" ç¡®å®ļ ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn Dismiss Listener Ġ{ ĠEvent Bus . getDefault (). post ( Event Entity ( Constant Pool . Int . REFRESH _ WEEK _ FRAGMENT _ DATA )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Navigation ItemSelected (@ NonNull Ġitem : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// å¯¼èĪª æĬ½ å± ī åĽŀè°ĥ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ class _ schedule Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fragment ( R . id . nav _ class _ schedule ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ check _ score Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fragment ( R . id . nav _ check _ score ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠSetting Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . nav _ day _ night Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Switch . isChecked Ġ= Ġ! drawer Switch . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdrawer _ layout . close Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġè®¾ç½® Fragment ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid Ġid ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Fragment (@ Id Res Ġid : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġfragment Sparse Array . get ( id ) ĊĠĠĠĠĠĠĠ Ġval Ġf Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . frame _ container ) ĊĠĠĠĠĠĠĠ Ġif Ġ( f Ġ!== Ġfragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . frame _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ CODE _ CH OOSE Ġ= Ġ 1 0 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ CODE Ġ= Ġ 1 0 3 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSET TING _ REQUEST _ CODE Ġ= Ġ 1 0 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠACTION _ BAR _ TITLE _ FORMAT Ġ= ĠSimpleDateFormat (" MM æľĪ dd æĹ¥ ĠE ", ĠLocale . CH INE SE ) ĊĠĠĠ Ġ} Ċ } Ċ