diff --git a/app/src/main/java/com/finnmglas/launcher/FirstStartupActivity.kt b/app/src/main/java/com/finnmglas/launcher/FirstStartupActivity.kt index 47e3317..19198f7 100644 --- a/app/src/main/java/com/finnmglas/launcher/FirstStartupActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/FirstStartupActivity.kt @@ -10,22 +10,6 @@ import android.view.animation.Animation import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_firststartup.* -// Taken from https://stackoverflow.com/questions/47293269 -fun View.blink( - times: Int = Animation.INFINITE, - duration: Long = 1000L, - offset: Long = 20L, - minAlpha: Float = 0.2f, - maxAlpha: Float = 1.0f, - repeatMode: Int = Animation.REVERSE -) { - startAnimation(AlphaAnimation(minAlpha, maxAlpha).also { - it.duration = duration - it.startOffset = offset - it.repeatMode = repeatMode - it.repeatCount = times - }) -} class FirstStartupActivity : AppCompatActivity(){ diff --git a/app/src/main/java/com/finnmglas/launcher/Functions.kt b/app/src/main/java/com/finnmglas/launcher/Functions.kt index 278aa29..a81f897 100644 --- a/app/src/main/java/com/finnmglas/launcher/Functions.kt +++ b/app/src/main/java/com/finnmglas/launcher/Functions.kt @@ -10,8 +10,43 @@ import android.content.pm.PackageManager import android.net.Uri import android.os.Bundle import android.provider.Settings +import android.view.View +import android.view.animation.AlphaAnimation +import android.view.animation.Animation +import android.view.animation.DecelerateInterpolator import android.widget.Toast +// Taken from https://stackoverflow.com/questions/47293269 +fun View.blink( + times: Int = Animation.INFINITE, + duration: Long = 1000L, + offset: Long = 20L, + minAlpha: Float = 0.2f, + maxAlpha: Float = 1.0f, + repeatMode: Int = Animation.REVERSE +) { + startAnimation(AlphaAnimation(minAlpha, maxAlpha).also { + it.duration = duration + it.startOffset = offset + it.repeatMode = repeatMode + it.repeatCount = times + }) +} + +fun View.fadeIn(duration: Long = 1000L) { + startAnimation(AlphaAnimation(0f, 1f).also { + it.interpolator = DecelerateInterpolator() + it.duration = duration + }) +} + +fun View.fadeOut(duration: Long = 1000L) { + startAnimation(AlphaAnimation(1f, 0f).also { + it.interpolator = DecelerateInterpolator() + it.duration = duration + }) +} + /** Activity related */ fun isInstalled(uri: String, context: Context): Boolean { diff --git a/app/src/main/java/com/finnmglas/launcher/MainActivity.kt b/app/src/main/java/com/finnmglas/launcher/MainActivity.kt index 676f196..15857bc 100644 --- a/app/src/main/java/com/finnmglas/launcher/MainActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/MainActivity.kt @@ -32,7 +32,12 @@ class MainActivity : AppCompatActivity(), // get device dimensions private val displayMetrics = DisplayMetrics() + + // timers private var clockTimer = Timer() + private var tooltipTimer = Timer() + + private var settingsIconShown = false /** Activity Lifecycle functions */ override fun onCreate(savedInstanceState: Bundle?) { @@ -54,6 +59,9 @@ class MainActivity : AppCompatActivity(), window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) setContentView(R.layout.activity_main) + + // Start by showing the settings icon + showSettingsIcon() } override fun onStart(){ @@ -75,12 +83,13 @@ class MainActivity : AppCompatActivity(), val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) val timeFormat = SimpleDateFormat("HH:mm:ss", Locale.getDefault()) - clockTimer = fixedRateTimer("timer", true, 0L, 1000) { + clockTimer = fixedRateTimer("clockTimer", true, 0L, 1000) { this@MainActivity.runOnUiThread { dateView.text = dateFormat.format(Date()) timeView.text = timeFormat.format(Date()) } } + } override fun onPause() { @@ -88,6 +97,11 @@ class MainActivity : AppCompatActivity(), clockTimer.cancel() } + + private fun openSettings(){ + startActivity(Intent(this, SettingsActivity::class.java)) + } + /** Touch- and Key-related functions to start activities */ override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { @@ -120,11 +134,36 @@ class MainActivity : AppCompatActivity(), return true } - // Open Settings Activity - override fun onLongPress(event: MotionEvent) { - startActivity(Intent(this, SettingsActivity::class.java)) + override fun onLongPress(event: MotionEvent) { openSettings() } + + // Tooltip + override fun onSingleTapUp(event: MotionEvent): Boolean { + when(settingsIconShown) { + true -> hideSettingsIcon() + false -> showSettingsIcon() + } + return true } + private fun showSettingsIcon(){ + settingstooltip.fadeIn() + settingstooltip.visibility = View.VISIBLE + settingsIconShown = true + + tooltipTimer = fixedRateTimer("tooltipTimer", true, 10000, 1000) { + this@MainActivity.runOnUiThread { hideSettingsIcon() } + } + } + + private fun hideSettingsIcon(){ + tooltipTimer.cancel() + settingstooltip.fadeOut() + settingstooltip.visibility = View.INVISIBLE + settingsIconShown = false + } + + fun settingsIconOnTouch(view: View){ openSettings() } + override fun onTouchEvent(event: MotionEvent): Boolean { return if (mDetector.onTouchEvent(event)) { true } else { super.onTouchEvent(event) } } @@ -136,6 +175,5 @@ class MainActivity : AppCompatActivity(), override fun onDown(event: MotionEvent): Boolean { return true } override fun onScroll(e1: MotionEvent, e2: MotionEvent, dX: Float, dY: Float): Boolean { return true } override fun onShowPress(event: MotionEvent) {} - override fun onSingleTapUp(event: MotionEvent): Boolean { return true } override fun onSingleTapConfirmed(event: MotionEvent): Boolean { return true } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 0e3d9dd..232fd1e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -36,4 +36,20 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + \ No newline at end of file diff --git a/app/src/main/res/values/icons.xml b/app/src/main/res/values/icons.xml index 12c70c3..f0ec444 100644 --- a/app/src/main/res/values/icons.xml +++ b/app/src/main/res/values/icons.xml @@ -3,6 +3,7 @@ +