package Ġcom . h ci _ g 1 . ame li or Ċ Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget .* Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġkotlinx . coroutines . launch Ċ Ċ import Ġcom . h ci _ g 1 . ame li or . entities . Mood Ċ import Ġcom . h ci _ g 1 . ame li or . entities . User Ċ Ċ class ĠFirst Time Orientation : ĠAppCompatActivity () Ċ { Ċ ĉ private Ġval Ġdisplay Metrics Ġ= ĠDisplay Metrics () Ċ ĉ private Ġvar Ġscreen Height : ĠFloat Ġ= Ġ 0 f ĊĊ ĉ private Ġlateinit Ġvar Ġbutton Continue Button : ĠButton Ċ ĉ private Ġlateinit Ġvar Ġbutton Permissions Button : ĠButton Ċ ĉ private Ġlateinit Ġvar ĠtextView Orientation Hello 0 1 : ĠTextView Ċ ĉ private Ġlateinit Ġvar ĠtextView Orientation Hello 0 2 : ĠTextView Ċ ĉ private Ġlateinit Ġvar ĠtextView Orientation Hello 0 3 : ĠTextView ĊĊ ĉ override Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ċ ĉ { Ċĉ ĉ super . onCreate ( savedInstanceState ) Ċĉ ĉ set ContentView ( R . layout . first _ time _ orientation ) ĊĊĉ ĉ /* ĠInitialize Ġwidgets . Ġ*/ Ċĉ ĉ button Continue Button ĠĠĠĠĠĠ Ġ= ĠfindViewById ( R . id . continue Button ) Ċĉ ĉ button Permissions Button ĠĠĠ Ġ= ĠfindViewById ( R . id . permissions Button ) Ċĉ ĉ textView Orientation Hello 0 1 Ġ= ĠfindViewById ( R . id . orientation Hello 0 1 ) Ċĉ ĉ textView Orientation Hello 0 2 Ġ= ĠfindViewById ( R . id . orientation Hello 0 2 ) Ċĉ ĉ textView Orientation Hello 0 3 Ġ= ĠfindViewById ( R . id . orientation Hello 0 3 ) ĊĊĉ ĉ /* ĠUI Ġlogic . Ġ*/ ĊĊĉ ĉ /* ĠGet Ġthe Ġscreen Ġmetrics . Ġ*/ Ċĉ ĉ window Manager . default Display . get Metrics ( display Metrics ) Ċĉ ĉ screen Height Ġ= Ġdisplay Metrics . height Pixels . toFloat () ĊĊĉ ĉ /* ĠTODO : ĠWhen Ġthe Ġtext Ġis Ġrolling , Ġwe Ġshould Ġadd Ġsome Ġkind Ġof Ġloading - like Ġimage / animation . Ġ*/ ĊĊĉ ĉ /* ĠMake Ġthe Ġfirst Ġtext Ġview Ġvisible . Ġ*/ Ċĉ ĉ textView Orientation Hello 0 1 . visibility Ġ= ĠView . VISIBLE ĊĊĉ ĉ /* ĠF ade Ġin Ġthe Ġfirst Ġtext Ġview Ġand Ġmove Ġit Ġup . Ġ*/ Ċĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 1 , Ġ" alpha ", Ġ 1 . 0 0 f ). apply Ġ{ Ċĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉ ĉ start () Ċĉ ĉ } Ċĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 1 , Ġ" translation Y ", Ġ- 6 4 f ). apply Ġ{ Ċĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉ ĉ start () Ċĉ ĉ } ĊĊĉ ĉ /* ĠGive Ġthe Ġuser Ġ 3 0 0 0 Ġmilliseconds Ġto Ġread Ġ" Welcome Ġto ĠA me li or !" Ġ*/ Ċĉ ĉ Handler (). post Delayed ( Ċĉĉ ĉ { Ċĉĉĉ ĉ /* ĠB ring Ġthe Ġfirst Ġtext Ġup Ġand Ġfade Ġit Ġout . Ġ*/ Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 1 , Ġ" translation Y ", Ġscreen Height Ġ* Ġ- 0 . 2 0 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 1 , Ġ" alpha ", Ġ 0 . 2 5 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } ĊĊĉĉĉ ĉ /* ĠMake Ġthe Ġnext Ġview Ġvisible , Ġfade Ġit Ġin , Ġand Ġmove Ġit Ġup . Ġ*/ Ċĉĉĉ ĉ textView Orientation Hello 0 2 . visibility Ġ= ĠView . VISIBLE Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 2 , Ġ" alpha ", Ġ 1 . 0 0 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 2 , Ġ" translation Y ", Ġ- 6 4 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } Ċĉĉ ĉ }, Ċĉĉĉ 3 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉ ĉ ) ĊĊĉ ĉ /* ĠGive Ġthe Ġuser Ġ 3 0 0 0 Ġmilliseconds Ġto Ġread Ġ" A me li or ! Ġhelps ..." Ġ*/ Ċĉ ĉ Handler (). post Delayed ( Ċĉĉ ĉ { Ċĉĉĉ ĉ /* ĠB ring Ġthe Ġsecond Ġtext Ġup Ġand Ġfade Ġit Ġout . Ġ*/ Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 2 , Ġ" translation Y ", Ġscreen Height Ġ* Ġ- 0 . 2 0 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 2 , Ġ" alpha ", Ġ 0 . 2 5 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } ĊĊĉĉĉ ĉ /* ĠMake Ġthe Ġnext Ġview Ġvisible , Ġfade Ġit Ġin , Ġand Ġmove Ġit Ġup . Ġ*/ Ċĉĉĉ ĉ textView Orientation Hello 0 3 . visibility Ġ= ĠView . VISIBLE Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 3 , Ġ" alpha ", Ġ 1 . 0 0 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 3 , Ġ" translation Y ", Ġ- 6 4 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } Ċĉĉ ĉ }, Ċĉĉĉ 6 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉ ĉ ) ĊĊĉ ĉ /* ĠGive Ġthe Ġuser Ġ 3 0 0 0 Ġmilliseconds Ġto Ġview Ġ" In Ġorder Ġto ..." Ġ*/ Ċĉ ĉ Handler (). post Delayed ( Ċĉĉ ĉ { Ċĉĉĉ ĉ /* ĠB ring Ġthe Ġthird Ġtext Ġup . Ġ*/ Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 3 , Ġ" translation Y ", Ġscreen Height Ġ* Ġ- 0 . 1 8 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } ĊĊĉĉĉ ĉ /* ĠB ring Ġall Ġtexts Ġfull Ġopacity . Ġ*/ Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 1 , Ġ" alpha ", Ġ 1 . 0 0 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } Ċĉĉĉ ĉ Object Animator . of Float ( textView Orientation Hello 0 2 , Ġ" alpha ", Ġ 1 . 0 0 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } ĊĊĉĉĉ ĉ /* ĠMake Ġthe Ġbutton Ġvisible Ġand Ġfade Ġit Ġin . Ġ*/ Ċĉĉĉ ĉ button Permissions Button . visibility Ġ= ĠView . VISIBLE Ċĉĉĉ ĉ Object Animator . of Float ( button Permissions Button , Ġ" alpha ", Ġ 1 . 0 0 f ). apply Ġ{ Ċĉĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉĉ ĉ start () Ċĉĉĉ ĉ } Ċĉĉ ĉ }, Ċĉĉĉ 9 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉ ĉ ) ĊĊĉ ĉ /* ĠUp on Ġclicking Ġthe Ġpermissions Ġbutton , Ġask Ġthe Ġuser Ġfor Ġpermissions . ĊĉĉĠĠ ĠThen , Ġallow Ġthem Ġto Ġproceed . Ġ*/ Ċĉ ĉ button Permissions Button . setOnClickListener Ġ{ ĊĊĉĉ ĉ Permissions . request _ all _ permissions ( this ) ĊĊĉĉ ĉ button Continue Button . visibility Ġ= ĠView . VISIBLE ĊĊĉĉ ĉ Object Animator . of Float ( button Continue Button , Ġ" alpha ", Ġ 1 . 0 0 f ). apply Ġ{ Ċĉĉĉ ĉ duration Ġ= Ġ 1 0 0 0 Ġ Ġ// Ġmilliseconds Ċĉĉĉ ĉ start () Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ /* ĠUp on Ġclicking Ġthe Ġcontinue Ġbutton , Ġgo Ġto Ġthe Ġmain Ġpage . Ġ*/ Ċĉ ĉ button Continue Button . setOnClickListener Ġ{ ĊĊĉĉ ĉ /* ĠSince Ġthese Ġare Ġhere Ġonly Ġfor Ġdebugging , Ġthey 're Ġlocal Ġto Ġthis Ġscope ĊĉĉĉĠĠ Ġand Ġare Ġnot Ġused Ġanywhere Ġelse . Ġ*/ Ċĉĉ ĉ val Ġm ood Dao Ġ= ĠUser Database . getInstance ( this ). mood Dao Ċĉĉ ĉ val Ġuser Dao Ġ= ĠUser Database . getInstance ( this ). user Dao ĊĊĉĉ ĉ /* ĠFor Ġdebugging Ġpurposes , Ġlog Ġthe Ġuser Ġinput . Ġ*/ Ċĉĉ ĉ lifecycle Scope . launch Ġ{ Ċĉĉĉ ĉ val Ġm ood Ġ= Ġm ood Dao . get _ mood ( 0 ) Ċĉĉĉ ĉ val Ġuser Ġ= Ġuser Dao . get _ user (" user ") Ċĉĉĉ ĉ Log . d ( TAG , Ġ" User Ġinput : Ġname =${ user . name }; Ġm ood =${ mood . value } Ġ( t =${ mood . timestamp }) ") Ċĉĉ ĉ } ĊĊĉĉ ĉ Log . d ( TAG , Ġ" Moving Ġto ĠDashboard .") Ċĉĉ ĉ startActivity ( Intent ( this , ĠDashboard :: class . java )) Ċĉĉ ĉ finish () Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ comp anion Ġobject Ċ ĉ { Ċĉ ĉ private Ġconst Ġval ĠTAG Ġ= Ġ" First Time Orientation " Ċ ĉ } Ċ } Ċ