From 63eddde8379db416d88acacb5e915653b0cef456 Mon Sep 17 00:00:00 2001 From: johan12345 Date: Sun, 10 Oct 2021 19:38:25 +0200 Subject: [PATCH] add logo animation in search bar on app start --- .../java/net/vonforst/evmap/MapsActivity.kt | 97 ++++++++++--------- .../vonforst/evmap/fragment/MapFragment.kt | 26 +++++ app/src/main/res/layout/app_logo_small.xml | 34 +++++++ app/src/main/res/layout/fragment_map.xml | 51 ++++++---- app/src/main/res/navigation/nav_graph.xml | 4 + 5 files changed, 145 insertions(+), 67 deletions(-) create mode 100644 app/src/main/res/layout/app_logo_small.xml diff --git a/app/src/main/java/net/vonforst/evmap/MapsActivity.kt b/app/src/main/java/net/vonforst/evmap/MapsActivity.kt index f60aa1cc..093f72d4 100644 --- a/app/src/main/java/net/vonforst/evmap/MapsActivity.kt +++ b/app/src/main/java/net/vonforst/evmap/MapsActivity.kt @@ -1,5 +1,6 @@ package net.vonforst.evmap +import android.app.PendingIntent import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent @@ -111,56 +112,58 @@ class MapsActivity : AppCompatActivity(), navController.graph = navGraph return } else { + var deepLink: PendingIntent? = null + + if (intent?.scheme == "geo") { + val query = intent.data?.query?.split("=")?.get(1) + val coords = getLocationFromIntent(intent) + + if (coords != null) { + val lat = coords[0] + val lon = coords[1] + deepLink = navController.createDeepLink() + .setGraph(R.navigation.nav_graph) + .setDestination(R.id.map) + .setArguments(MapFragmentArgs(latLng = LatLng(lat, lon)).toBundle()) + .createPendingIntent() + } else if (query != null && query.isNotEmpty()) { + deepLink = navController.createDeepLink() + .setGraph(R.navigation.nav_graph) + .setDestination(R.id.map) + .setArguments(MapFragmentArgs(locationName = query).toBundle()) + .createPendingIntent() + } + } else if (intent?.scheme == "https" && intent?.data?.host == "www.goingelectric.de") { + val id = intent.data?.pathSegments?.last()?.toLongOrNull() + if (id != null) { + deepLink = navController.createDeepLink() + .setGraph(R.navigation.nav_graph) + .setDestination(R.id.map) + .setArguments(MapFragmentArgs(chargerId = id).toBundle()) + .createPendingIntent() + } + } else if (intent.hasExtra(EXTRA_CHARGER_ID)) { + deepLink = navController.createDeepLink() + .setDestination(R.id.map) + .setArguments( + MapFragmentArgs( + chargerId = intent.getLongExtra(EXTRA_CHARGER_ID, 0), + latLng = LatLng( + intent.getDoubleExtra(EXTRA_LAT, 0.0), + intent.getDoubleExtra(EXTRA_LON, 0.0) + ) + ).toBundle() + ) + .createPendingIntent() + } + navGraph.setStartDestination(R.id.map) - navController.graph = navGraph - } - - - if (intent?.scheme == "geo") { - val query = intent.data?.query?.split("=")?.get(1) - val coords = getLocationFromIntent(intent) - - if (coords != null) { - val lat = coords[0] - val lon = coords[1] - val deepLink = navController.createDeepLink() - .setGraph(R.navigation.nav_graph) - .setDestination(R.id.map) - .setArguments(MapFragmentArgs(latLng = LatLng(lat, lon)).toBundle()) - .createPendingIntent() - deepLink.send() - } else if (query != null && query.isNotEmpty()) { - val deepLink = navController.createDeepLink() - .setGraph(R.navigation.nav_graph) - .setDestination(R.id.map) - .setArguments(MapFragmentArgs(locationName = query).toBundle()) - .createPendingIntent() + if (deepLink != null) { + navController.graph = navGraph deepLink.send() + } else { + navController.setGraph(navGraph, MapFragmentArgs(appStart = true).toBundle()) } - } else if (intent?.scheme == "https" && intent?.data?.host == "www.goingelectric.de") { - val id = intent.data?.pathSegments?.last()?.toLongOrNull() - if (id != null) { - val deepLink = navController.createDeepLink() - .setGraph(R.navigation.nav_graph) - .setDestination(R.id.map) - .setArguments(MapFragmentArgs(chargerId = id).toBundle()) - .createPendingIntent() - deepLink.send() - } - } else if (intent.hasExtra(EXTRA_CHARGER_ID)) { - navController.createDeepLink() - .setDestination(R.id.map) - .setArguments( - MapFragmentArgs( - chargerId = intent.getLongExtra(EXTRA_CHARGER_ID, 0), - latLng = LatLng( - intent.getDoubleExtra(EXTRA_LAT, 0.0), - intent.getDoubleExtra(EXTRA_LON, 0.0) - ) - ).toBundle() - ) - .createPendingIntent() - .send() } } diff --git a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt index 98397f61..3e44b6c2 100644 --- a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt +++ b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt @@ -250,6 +250,32 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac // when there is already another navigation going on } }*/ + + val fragmentArgs: MapFragmentArgs by navArgs() + if (savedInstanceState == null && fragmentArgs.appStart) { + // logo animation after starting the app + binding.appLogo.root.visibility = View.VISIBLE + binding.appLogo.root.alpha = 0f + binding.search.visibility = View.GONE + + binding.appLogo.root.animate().alpha(1f) + .withEndAction { + binding.appLogo.root.animate().alpha(0f).apply { + startDelay = 1000 + }.withEndAction { + binding.appLogo.root.visibility = View.GONE + binding.search.visibility = View.VISIBLE + binding.search.alpha = 0f + binding.search.animate().alpha(1f).start() + }.start() + }.apply { + startDelay = 100 + }.start() + arguments = fragmentArgs.copy(appStart = false).toBundle() + } else { + binding.appLogo.root.visibility = View.GONE + binding.search.visibility = View.VISIBLE + } } override fun onResume() { diff --git a/app/src/main/res/layout/app_logo_small.xml b/app/src/main/res/layout/app_logo_small.xml new file mode 100644 index 00000000..a6d36a13 --- /dev/null +++ b/app/src/main/res/layout/app_logo_small.xml @@ -0,0 +1,34 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml index bbc6b90f..177a8fcd 100644 --- a/app/src/main/res/layout/fragment_map.xml +++ b/app/src/main/res/layout/fragment_map.xml @@ -69,13 +69,17 @@ android:layout_height="48dp" app:contentInsetStartWithNavigation="70dp"> - + android:layout_height="match_parent"> + + - - + + + + + diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 5ef69006..69de11ff 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -47,6 +47,10 @@ android:defaultValue="@null" app:argType="com.car2go.maps.model.LatLng" app:nullable="true" /> +