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"/> +