diff --git a/app/src/main/java/org/fossasia/openevent/general/attendees/AttendeeFragment.kt b/app/src/main/java/org/fossasia/openevent/general/attendees/AttendeeFragment.kt
index 07845150e..62068ae9e 100644
--- a/app/src/main/java/org/fossasia/openevent/general/attendees/AttendeeFragment.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/attendees/AttendeeFragment.kt
@@ -71,6 +71,7 @@ import org.fossasia.openevent.general.ticket.TICKET_ID_AND_QTY
import org.fossasia.openevent.general.ticket.TicketDetailsRecyclerAdapter
import org.fossasia.openevent.general.ticket.TicketId
import org.fossasia.openevent.general.utils.Utils
+import org.fossasia.openevent.general.utils.Utils.getAnimFade
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.fossasia.openevent.general.utils.nullToEmpty
import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -457,7 +458,7 @@ class AttendeeFragment : Fragment() {
// Initialise Order Completed Fragment
val bundle = Bundle()
bundle.putLong("EVENT_ID", id)
- findNavController(rootView).navigate(R.id.orderCompletedFragment, bundle)
+ findNavController(rootView).navigate(R.id.orderCompletedFragment, bundle, getAnimFade())
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
diff --git a/app/src/main/java/org/fossasia/openevent/general/auth/ProfileFragment.kt b/app/src/main/java/org/fossasia/openevent/general/auth/ProfileFragment.kt
index 831f9e4a1..b2a444488 100644
--- a/app/src/main/java/org/fossasia/openevent/general/auth/ProfileFragment.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/auth/ProfileFragment.kt
@@ -27,6 +27,8 @@ import org.fossasia.openevent.general.CircleTransform
import org.fossasia.openevent.general.MainActivity
import org.fossasia.openevent.general.R
import org.fossasia.openevent.general.utils.Utils
+import org.fossasia.openevent.general.utils.Utils.getAnimFade
+import org.fossasia.openevent.general.utils.Utils.getAnimSlide
import org.fossasia.openevent.general.utils.Utils.requireDrawable
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.fossasia.openevent.general.utils.nullToEmpty
@@ -40,7 +42,7 @@ class ProfileFragment : Fragment() {
private val EMAIL: String = "EMAIL"
private fun redirectToLogin() {
- findNavController(rootView).navigate(R.id.loginFragment)
+ findNavController(rootView).navigate(R.id.loginFragment, null, getAnimSlide())
}
private fun redirectToMain() {
@@ -97,7 +99,7 @@ class ProfileFragment : Fragment() {
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.edit_profile -> {
- findNavController(rootView).navigate(R.id.editProfileFragment)
+ findNavController(rootView).navigate(R.id.editProfileFragment, null, getAnimFade())
return true
}
R.id.orga_app -> {
@@ -119,7 +121,7 @@ class ProfileFragment : Fragment() {
R.id.settings -> {
val bundle = Bundle()
bundle.putString(EMAIL, emailSettings)
- findNavController(rootView).navigate(R.id.settingsFragment, bundle)
+ findNavController(rootView).navigate(R.id.settingsFragment, bundle, getAnimFade())
return true
}
else -> return super.onOptionsItemSelected(item)
diff --git a/app/src/main/java/org/fossasia/openevent/general/event/EventDetailsFragment.kt b/app/src/main/java/org/fossasia/openevent/general/event/EventDetailsFragment.kt
index e17def39b..54988ccf0 100644
--- a/app/src/main/java/org/fossasia/openevent/general/event/EventDetailsFragment.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/event/EventDetailsFragment.kt
@@ -48,6 +48,7 @@ import org.fossasia.openevent.general.event.topic.SimilarEventsFragment
import org.fossasia.openevent.general.social.SocialLinksFragment
import org.fossasia.openevent.general.ticket.CURRENCY
import org.fossasia.openevent.general.ticket.TicketsFragment
+import org.fossasia.openevent.general.utils.Utils.getAnimSlide
import org.fossasia.openevent.general.utils.Utils.requireDrawable
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.fossasia.openevent.general.utils.nullToEmpty
@@ -161,7 +162,7 @@ class EventDetailsFragment : Fragment() {
val aboutEventOnClickListener = View.OnClickListener {
val bundle = Bundle()
bundle.putLong(EVENT_ID, eventId)
- findNavController(rootView).navigate(R.id.aboutEventFragment, bundle)
+ findNavController(rootView).navigate(R.id.aboutEventFragment, bundle, getAnimSlide())
}
// Event Description Section
@@ -307,7 +308,7 @@ class EventDetailsFragment : Fragment() {
bundle.putLong("EVENT_ID", eventId)
bundle.putString(CURRENCY, currency)
ticketFragment.arguments = bundle
- findNavController(rootView).navigate(R.id.ticketsFragment, bundle)
+ findNavController(rootView).navigate(R.id.ticketsFragment, bundle, getAnimSlide())
}
private fun loadSocialLinksFragment() {
diff --git a/app/src/main/java/org/fossasia/openevent/general/event/EventsFragment.kt b/app/src/main/java/org/fossasia/openevent/general/event/EventsFragment.kt
index 177b8670d..01758e384 100644
--- a/app/src/main/java/org/fossasia/openevent/general/event/EventsFragment.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/event/EventsFragment.kt
@@ -23,6 +23,8 @@ import kotlinx.android.synthetic.main.fragment_events.view.progressBar
import kotlinx.android.synthetic.main.fragment_events.view.shimmerEvents
import kotlinx.android.synthetic.main.fragment_events.view.swiperefresh
import org.fossasia.openevent.general.R
+import org.fossasia.openevent.general.utils.Utils.getAnimFade
+import org.fossasia.openevent.general.utils.Utils.getAnimSlide
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.koin.androidx.viewmodel.ext.android.viewModel
import timber.log.Timber
@@ -66,7 +68,7 @@ class EventsFragment : Fragment() {
override fun onClick(eventID: Long) {
val bundle = Bundle()
bundle.putLong(EVENT_ID, eventID)
- findNavController(rootView).navigate(R.id.eventDetailsFragment, bundle)
+ findNavController(rootView).navigate(R.id.eventDetailsFragment, bundle, getAnimFade())
}
}
@@ -119,7 +121,7 @@ class EventsFragment : Fragment() {
}
rootView.locationTextView.setOnClickListener {
- findNavController(rootView).navigate(R.id.searchLocationFragment)
+ findNavController(rootView).navigate(R.id.searchLocationFragment, null, getAnimSlide())
}
showNoInternetScreen(isNetworkConnected())
diff --git a/app/src/main/java/org/fossasia/openevent/general/favorite/FavoriteFragment.kt b/app/src/main/java/org/fossasia/openevent/general/favorite/FavoriteFragment.kt
index e98ba61ef..d9a52d1aa 100644
--- a/app/src/main/java/org/fossasia/openevent/general/favorite/FavoriteFragment.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/favorite/FavoriteFragment.kt
@@ -20,6 +20,7 @@ import org.fossasia.openevent.general.event.EVENT_ID
import org.fossasia.openevent.general.event.Event
import org.fossasia.openevent.general.event.FavoriteFabListener
import org.fossasia.openevent.general.event.RecyclerViewClickListener
+import org.fossasia.openevent.general.utils.Utils.getAnimFade
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.koin.androidx.viewmodel.ext.android.viewModel
import timber.log.Timber
@@ -55,7 +56,7 @@ class FavoriteFragment : Fragment() {
override fun onClick(eventID: Long) {
val bundle = Bundle()
bundle.putLong(EVENT_ID, eventID)
- findNavController(rootView).navigate(R.id.eventDetailsFragment, bundle)
+ findNavController(rootView).navigate(R.id.eventDetailsFragment, bundle, getAnimFade())
}
}
val favouriteFabClickListener = object : FavoriteFabListener {
diff --git a/app/src/main/java/org/fossasia/openevent/general/search/SearchFragment.kt b/app/src/main/java/org/fossasia/openevent/general/search/SearchFragment.kt
index c7765d50c..97e39d718 100644
--- a/app/src/main/java/org/fossasia/openevent/general/search/SearchFragment.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/search/SearchFragment.kt
@@ -20,6 +20,7 @@ import org.koin.androidx.viewmodel.ext.android.viewModel
import androidx.core.view.MenuItemCompat
import androidx.navigation.Navigation
import org.fossasia.openevent.general.MainActivity
+import org.fossasia.openevent.general.utils.Utils.getAnimSlide
const val FROM_SEARCH: String = "FromSearchFragment"
const val QUERY: String = "query"
@@ -49,7 +50,7 @@ class SearchFragment : Fragment() {
rootView.timeTextView.setOnClickListener {
val bundle = Bundle()
bundle.putString(SEARCH_TIME, rootView.timeTextView.text.toString())
- Navigation.findNavController(rootView).navigate(R.id.searchTimeFragment, bundle)
+ Navigation.findNavController(rootView).navigate(R.id.searchTimeFragment, bundle, getAnimSlide())
}
if (searchViewModel.savedDate != null) {
@@ -63,7 +64,7 @@ class SearchFragment : Fragment() {
rootView.locationTextView.setOnClickListener {
val bundle = Bundle()
bundle.putBoolean(FROM_SEARCH, true)
- Navigation.findNavController(rootView).navigate(R.id.searchLocationFragment, bundle)
+ Navigation.findNavController(rootView).navigate(R.id.searchLocationFragment, bundle, getAnimSlide())
}
return rootView
@@ -95,7 +96,7 @@ class SearchFragment : Fragment() {
bundle.putString(QUERY, query)
bundle.putString(LOCATION, rootView.locationTextView.text.toString().nullToEmpty())
bundle.putString(DATE, rootView.timeTextView.text.toString().nullToEmpty())
- findNavController(rootView).navigate(R.id.searchResultsFragment, bundle)
+ findNavController(rootView).navigate(R.id.searchResultsFragment, bundle, getAnimSlide())
return false
}
diff --git a/app/src/main/java/org/fossasia/openevent/general/search/SearchResultsFragment.kt b/app/src/main/java/org/fossasia/openevent/general/search/SearchResultsFragment.kt
index d72d68a3b..e266b7950 100644
--- a/app/src/main/java/org/fossasia/openevent/general/search/SearchResultsFragment.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/search/SearchResultsFragment.kt
@@ -23,6 +23,7 @@ import org.fossasia.openevent.general.event.Event
import org.fossasia.openevent.general.event.FavoriteFabListener
import org.fossasia.openevent.general.event.RecyclerViewClickListener
import org.fossasia.openevent.general.favorite.FavoriteEventsRecyclerAdapter
+import org.fossasia.openevent.general.utils.Utils.getAnimFade
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.fossasia.openevent.general.utils.nullToEmpty
import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -57,7 +58,7 @@ class SearchResultsFragment : Fragment() {
override fun onClick(eventID: Long) {
val bundle = Bundle()
bundle.putLong(EVENT_ID, eventID)
- findNavController(rootView).navigate(R.id.eventDetailsFragment, bundle)
+ findNavController(rootView).navigate(R.id.eventDetailsFragment, bundle, getAnimFade())
}
}
diff --git a/app/src/main/java/org/fossasia/openevent/general/ticket/TicketsFragment.kt b/app/src/main/java/org/fossasia/openevent/general/ticket/TicketsFragment.kt
index 8b560d2a6..2873b60c3 100644
--- a/app/src/main/java/org/fossasia/openevent/general/ticket/TicketsFragment.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/ticket/TicketsFragment.kt
@@ -26,6 +26,7 @@ import kotlinx.android.synthetic.main.fragment_tickets.view.time
import org.fossasia.openevent.general.R
import org.fossasia.openevent.general.event.Event
import org.fossasia.openevent.general.event.EventUtils
+import org.fossasia.openevent.general.utils.Utils.getAnimSlide
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.fossasia.openevent.general.utils.nullToEmpty
import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -142,11 +143,11 @@ class TicketsFragment : Fragment() {
val bundle = Bundle()
bundle.putLong(EVENT_ID, id)
bundle.putSerializable(TICKET_ID_AND_QTY, ticketIdAndQty)
- findNavController(rootView).navigate(R.id.attendeeFragment, bundle)
+ findNavController(rootView).navigate(R.id.attendeeFragment, bundle, getAnimSlide())
}
private fun redirectToLogin() {
- findNavController(rootView).navigate(R.id.loginFragment)
+ findNavController(rootView).navigate(R.id.loginFragment, null, getAnimSlide())
}
private fun handleTicketSelect(id: Int, quantity: Int) {
diff --git a/app/src/main/java/org/fossasia/openevent/general/utils/Utils.kt b/app/src/main/java/org/fossasia/openevent/general/utils/Utils.kt
index 5ebad9cc1..db59d0f39 100644
--- a/app/src/main/java/org/fossasia/openevent/general/utils/Utils.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/utils/Utils.kt
@@ -13,6 +13,7 @@ import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
+import androidx.navigation.NavOptions
import org.fossasia.openevent.general.R
import timber.log.Timber
@@ -76,4 +77,22 @@ object Utils {
fun requireDrawable(@NonNull context: Context, @DrawableRes resId: Int) = AppCompatResources
.getDrawable(context, resId) ?: throw IllegalStateException("Drawable should not be null")
+
+ fun getAnimFade(): NavOptions {
+ val builder = NavOptions.Builder()
+ builder.setEnterAnim(R.anim.fade_in)
+ builder.setExitAnim(R.anim.fade_out)
+ builder.setPopEnterAnim(R.anim.slide_in_left)
+ builder.setPopExitAnim(R.anim.slide_out_right)
+ return builder.build()
+ }
+
+ fun getAnimSlide(): NavOptions {
+ val builder = NavOptions.Builder()
+ builder.setEnterAnim(R.anim.slide_in_right)
+ builder.setExitAnim(R.anim.slide_out_left)
+ builder.setPopEnterAnim(R.anim.slide_in_left)
+ builder.setPopExitAnim(R.anim.slide_out_right)
+ return builder.build()
+ }
}
diff --git a/app/src/main/res/anim/fade_in.xml b/app/src/main/res/anim/fade_in.xml
new file mode 100644
index 000000000..3d81f932d
--- /dev/null
+++ b/app/src/main/res/anim/fade_in.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/app/src/main/res/anim/fade_out.xml b/app/src/main/res/anim/fade_out.xml
new file mode 100644
index 000000000..b5be8e49e
--- /dev/null
+++ b/app/src/main/res/anim/fade_out.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/app/src/main/res/anim/slide_in_left.xml b/app/src/main/res/anim/slide_in_left.xml
index 4241de298..4b4d2628b 100644
--- a/app/src/main/res/anim/slide_in_left.xml
+++ b/app/src/main/res/anim/slide_in_left.xml
@@ -1,8 +1,9 @@
-
-
\ No newline at end of file
+ android:fromYDelta="0%"
+ android:toYDelta="0%"
+ android:duration="@android:integer/config_mediumAnimTime"/>
+
diff --git a/app/src/main/res/anim/slide_in_right.xml b/app/src/main/res/anim/slide_in_right.xml
index 7931d67f3..05cb8085e 100644
--- a/app/src/main/res/anim/slide_in_right.xml
+++ b/app/src/main/res/anim/slide_in_right.xml
@@ -4,5 +4,7 @@
-
\ No newline at end of file
+ android:fromYDelta="0%"
+ android:toYDelta="0%"
+ android:duration="@android:integer/config_mediumAnimTime"/>
+
diff --git a/app/src/main/res/anim/slide_out_left.xml b/app/src/main/res/anim/slide_out_left.xml
index f33f3e706..232c1a572 100644
--- a/app/src/main/res/anim/slide_out_left.xml
+++ b/app/src/main/res/anim/slide_out_left.xml
@@ -2,7 +2,9 @@
-
\ No newline at end of file
+ android:toXDelta="-100%"
+ android:fromYDelta="0%"
+ android:toYDelta="0%"
+ android:duration="@android:integer/config_mediumAnimTime"/>
+
diff --git a/app/src/main/res/anim/slide_out_right.xml b/app/src/main/res/anim/slide_out_right.xml
index 5e48cdffd..c52c55295 100644
--- a/app/src/main/res/anim/slide_out_right.xml
+++ b/app/src/main/res/anim/slide_out_right.xml
@@ -2,7 +2,9 @@
-
\ No newline at end of file
+ android:toXDelta="100%"
+ android:fromYDelta="0%"
+ android:toYDelta="0%"
+ android:duration="@android:integer/config_mediumAnimTime"/>
+