From 11045cbb0c9e2884c70007c5508a3a259f57382c Mon Sep 17 00:00:00 2001 From: Finn M Glas Date: Sat, 23 May 2020 11:10:44 +0200 Subject: [PATCH] Animate (rotate) the settings icon Also, onBackPress, the icon is hidden --- .../java/com/finnmglas/launcher/Functions.kt | 44 +++++++++++++++++-- .../com/finnmglas/launcher/MainActivity.kt | 11 +++-- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/finnmglas/launcher/Functions.kt b/app/src/main/java/com/finnmglas/launcher/Functions.kt index 1d61e7b..bb6bfa5 100644 --- a/app/src/main/java/com/finnmglas/launcher/Functions.kt +++ b/app/src/main/java/com/finnmglas/launcher/Functions.kt @@ -12,9 +12,7 @@ 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.view.animation.* import android.widget.Toast /** Variables for all of the app */ @@ -67,6 +65,44 @@ fun View.fadeOut(duration: Long = 300L) { }) } +fun View.fadeRotateIn(duration: Long = 500L) { + val combined = AnimationSet(false) + combined.addAnimation( + AlphaAnimation(0f, 1F).also { + it.interpolator = DecelerateInterpolator() + it.duration = duration + } + ) + combined.addAnimation( + RotateAnimation(0F, 180F, Animation.RELATIVE_TO_SELF, + 0.5f, Animation.RELATIVE_TO_SELF,0.5f).also { + it.duration = duration * 2 + it.interpolator = DecelerateInterpolator() + } + ) + + startAnimation(combined) +} + +fun View.fadeRotateOut(duration: Long = 500L) { + val combined = AnimationSet(false) + combined.addAnimation( + AlphaAnimation(1F, 0F).also { + it.interpolator = AccelerateInterpolator() + it.duration = duration + } + ) + combined.addAnimation( + RotateAnimation(0F, 180F, Animation.RELATIVE_TO_SELF, + 0.5f, Animation.RELATIVE_TO_SELF,0.5f).also { + it.duration = duration + it.interpolator = AccelerateInterpolator() + } + ) + + startAnimation(combined) +} + /** Activity related */ fun isInstalled(uri: String, context: Context): Boolean { @@ -134,7 +170,7 @@ fun getSavedTheme(context : Context) : String { val sharedPref = context.getSharedPreferences( context.getString(R.string.preference_file_key), Context.MODE_PRIVATE) - return sharedPref.getString("theme", "finnmglas").toString() + return sharedPref.getString("theme", "finn").toString() } fun saveTheme(context : Context, themeName : String) { diff --git a/app/src/main/java/com/finnmglas/launcher/MainActivity.kt b/app/src/main/java/com/finnmglas/launcher/MainActivity.kt index 32a0f39..1c93391 100644 --- a/app/src/main/java/com/finnmglas/launcher/MainActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/MainActivity.kt @@ -6,6 +6,9 @@ import android.os.AsyncTask import android.os.Bundle import android.util.DisplayMetrics import android.view.* +import android.view.animation.Animation +import android.view.animation.LinearInterpolator +import android.view.animation.RotateAnimation import androidx.appcompat.app.AppCompatActivity import androidx.core.view.GestureDetectorCompat import kotlinx.android.synthetic.main.activity_main.* @@ -14,6 +17,7 @@ import java.util.* import kotlin.concurrent.fixedRateTimer import kotlin.math.abs + class MainActivity : AppCompatActivity(), GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { @@ -116,7 +120,6 @@ class MainActivity : AppCompatActivity(), loadAppsTimer.cancel() } - private fun openSettings(){ startActivity(Intent(this, SettingsActivity::class.java)) } @@ -124,7 +127,7 @@ class MainActivity : AppCompatActivity(), /** Touch- and Key-related functions to start activities */ override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { - if (keyCode == KeyEvent.KEYCODE_BACK) return true + if (keyCode == KeyEvent.KEYCODE_BACK) if (settingsIconShown) hideSettingsIcon() else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) launchApp(volumeUpApp, this) else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) launchApp(volumeDownApp, this) return true @@ -166,7 +169,7 @@ class MainActivity : AppCompatActivity(), } private fun showSettingsIcon(){ - settingstooltip.fadeIn() + settingstooltip.fadeRotateIn() settingstooltip.visibility = View.VISIBLE settingsIconShown = true @@ -177,7 +180,7 @@ class MainActivity : AppCompatActivity(), private fun hideSettingsIcon(){ tooltipTimer.cancel() - settingstooltip.fadeOut() + settingstooltip.fadeRotateOut() settingstooltip.visibility = View.INVISIBLE settingsIconShown = false }