Added enter/exit animations for many fragments

This commit is contained in:
Sylvain Berfini 2020-10-20 15:17:52 +02:00
parent 7e74970302
commit da7cc2cbf5
6 changed files with 206 additions and 11 deletions

View file

@ -24,6 +24,7 @@ import android.os.Bundle
import androidx.core.os.bundleOf
import androidx.fragment.app.Fragment
import androidx.navigation.NavController
import androidx.navigation.NavOptions
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.fragment.findNavController
import org.linphone.R
@ -46,6 +47,24 @@ internal fun Fragment.findMasterNavController(): NavController {
}
}
fun getRightToLeftAnimationNavOptions(): NavOptions {
return NavOptions.Builder()
.setEnterAnim(R.anim.enter_right)
.setExitAnim(R.anim.exit_left)
.setPopEnterAnim(R.anim.enter_left)
.setPopExitAnim(R.anim.exit_right)
.build()
}
fun getLeftToRightAnimationNavOptions(): NavOptions {
return NavOptions.Builder()
.setEnterAnim(R.anim.enter_left)
.setExitAnim(R.anim.exit_right)
.setPopEnterAnim(R.anim.enter_right)
.setPopExitAnim(R.anim.exit_left)
.build()
}
/* Chat related */
internal fun MasterChatRoomsFragment.navigateToChatRoom() {
@ -80,12 +99,12 @@ internal fun MasterChatRoomsFragment.navigateToChatRoomCreation(
internal fun DetailChatRoomFragment.navigateToContacts(sipUriToAdd: String) {
val deepLink = "linphone-android://contact/new/$sipUriToAdd"
findMasterNavController().navigate(Uri.parse(deepLink))
findMasterNavController().navigate(Uri.parse(deepLink), getLeftToRightAnimationNavOptions())
}
internal fun DetailChatRoomFragment.navigateToChatRooms() {
val deepLink = "linphone-android://chat/"
findMasterNavController().navigate(Uri.parse(deepLink))
findMasterNavController().navigate(Uri.parse(deepLink), getLeftToRightAnimationNavOptions())
}
/* Contacts related */
@ -117,7 +136,7 @@ internal fun MasterContactsFragment.navigateToContactEditor(sipUriToAdd: String?
internal fun ContactEditorFragment.navigateToContact(contact: NativeContact) {
val deepLink = "linphone-android://contact/view/${contact.nativeId}"
findMasterNavController().navigate(Uri.parse(deepLink))
findMasterNavController().navigate(Uri.parse(deepLink), getRightToLeftAnimationNavOptions())
}
/* History related */
@ -136,17 +155,17 @@ internal fun MasterCallLogsFragment.navigateToCallHistory() {
internal fun DetailCallLogFragment.navigateToContacts(sipUriToAdd: String) {
val deepLink = "linphone-android://contact/new/$sipUriToAdd"
findMasterNavController().navigate(Uri.parse(deepLink))
findMasterNavController().navigate(Uri.parse(deepLink), getRightToLeftAnimationNavOptions())
}
internal fun DetailCallLogFragment.navigateToContact(contact: NativeContact) {
val deepLink = "linphone-android://contact/view/${contact.nativeId}"
findMasterNavController().navigate(Uri.parse(deepLink))
findMasterNavController().navigate(Uri.parse(deepLink), getRightToLeftAnimationNavOptions())
}
internal fun DetailCallLogFragment.navigateToFriend(friendAddress: Address) {
val deepLink = "linphone-android://contact/new/${friendAddress.asStringUriOnly()}"
findMasterNavController().navigate(Uri.parse(deepLink))
findMasterNavController().navigate(Uri.parse(deepLink), getRightToLeftAnimationNavOptions())
}
/* Settings related */

View file

@ -5,7 +5,6 @@
android:id="@+id/assistant_nav_graph.xml"
app:startDestination="@id/welcomeFragment">
<fragment
android:id="@+id/welcomeFragment"
android:name="org.linphone.activities.assistant.fragments.WelcomeFragment"
@ -13,18 +12,38 @@
android:label="WelcomeFragment" >
<action
android:id="@+id/action_welcomeFragment_to_accountLoginFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/accountLoginFragment" />
<action
android:id="@+id/action_welcomeFragment_to_emailAccountCreationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/emailAccountCreationFragment" />
<action
android:id="@+id/action_welcomeFragment_to_phoneAccountCreationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/phoneAccountCreationFragment" />
<action
android:id="@+id/action_welcomeFragment_to_genericAccountLoginFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/genericAccountLoginFragment" />
<action
android:id="@+id/action_welcomeFragment_to_remoteProvisioningFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/remoteProvisioningFragment" />
</fragment>
<fragment
@ -34,9 +53,17 @@
android:label="AccountLoginFragment" >
<action
android:id="@+id/action_accountLoginFragment_to_echoCancellerCalibrationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/echoCancellerCalibrationFragment" />
<action
android:id="@+id/action_accountLoginFragment_to_phoneAccountValidationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/phoneAccountValidationFragment" />
</fragment>
<fragment
@ -46,6 +73,10 @@
android:label="GenericAccountLoginFragment" >
<action
android:id="@+id/action_genericAccountLoginFragment_to_echoCancellerCalibrationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/echoCancellerCalibrationFragment" />
</fragment>
<fragment
@ -55,9 +86,17 @@
android:label="RemoteProvisioningFragment" >
<action
android:id="@+id/action_remoteProvisioningFragment_to_qrCodeFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/qrCodeFragment" />
<action
android:id="@+id/action_remoteProvisioningFragment_to_echoCancellerCalibrationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/echoCancellerCalibrationFragment" />
</fragment>
<fragment
@ -67,6 +106,10 @@
android:label="EmailAccountCreationFragment" >
<action
android:id="@+id/action_emailAccountCreationFragment_to_emailAccountValidationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/emailAccountValidationFragment" />
</fragment>
<fragment
@ -76,6 +119,10 @@
android:label="EmailAccountValidationFragment" >
<action
android:id="@+id/action_emailAccountValidationFragment_to_phoneAccountLinkingFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/phoneAccountLinkingFragment" />
</fragment>
<fragment
@ -85,6 +132,10 @@
android:label="PhoneAccountCreationFragment" >
<action
android:id="@+id/action_phoneAccountCreationFragment_to_phoneAccountValidationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/phoneAccountValidationFragment" />
</fragment>
<fragment
@ -94,6 +145,10 @@
android:label="PhoneAccountValidationFragment" >
<action
android:id="@+id/action_phoneAccountValidationFragment_to_echoCancellerCalibrationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/echoCancellerCalibrationFragment" />
<argument
android:name="PhoneNumber"
@ -136,6 +191,10 @@
app:nullable="true" />
<action
android:id="@+id/action_phoneAccountLinkingFragment_to_phoneAccountValidationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/phoneAccountValidationFragment" >
<argument
android:name="IsCreation"
@ -153,6 +212,10 @@
android:defaultValue="false" />
<action
android:id="@+id/action_phoneAccountLinkingFragment_to_echoCancellerCalibrationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/echoCancellerCalibrationFragment" />
</fragment>
</navigation>

View file

@ -12,15 +12,31 @@
android:label="DetailChatRoomFragment" >
<action
android:id="@+id/action_detailChatRoomFragment_to_imdnFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/imdnFragment" />
<action
android:id="@+id/action_detailChatRoomFragment_to_devicesFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/devicesFragment" />
<action
android:id="@+id/action_detailChatRoomFragment_to_groupInfoFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/groupInfoFragment" />
<action
android:id="@+id/action_detailChatRoomFragment_to_ephemeralFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/ephemeralFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/ephemeralFragment"
@ -38,9 +54,17 @@
android:defaultValue="false" />
<action
android:id="@+id/action_chatRoomCreationFragment_to_groupInfoFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/groupInfoFragment" />
<action
android:id="@+id/action_chatRoomCreationFragment_to_detailChatRoomFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/detailChatRoomFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/masterChatRoomsFragment"
@ -58,12 +82,20 @@
android:label="GroupInfoFragment" >
<action
android:id="@+id/action_groupInfoFragment_to_chatRoomCreationFragment"
app:enterAnim="@anim/enter_left"
app:exitAnim="@anim/exit_right"
app:popEnterAnim="@anim/enter_right"
app:popExitAnim="@anim/exit_left"
app:destination="@id/chatRoomCreationFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/chatRoomCreationFragment"
app:popUpToInclusive="true" />
<action
android:id="@+id/action_groupInfoFragment_to_detailChatRoomFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/detailChatRoomFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/masterChatRoomsFragment"

View file

@ -12,6 +12,10 @@
android:label="DetailContactFragment" >
<action
android:id="@+id/action_detailContactFragment_to_contactEditorFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/contactEditorFragment" />
</fragment>
<fragment
@ -21,6 +25,10 @@
android:label="ContactEditorFragment" />
<action
android:id="@+id/action_global_detailContactFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/detailContactFragment"
app:launchSingleTop="true" />

View file

@ -10,4 +10,5 @@
android:name="org.linphone.activities.main.history.fragments.DetailCallLogFragment"
tools:layout="@layout/history_detail_fragment"
android:label="DetailCallLogFragment" />
</navigation>

View file

@ -33,10 +33,18 @@
app:popUpToInclusive="true" />
<action
android:id="@+id/action_masterChatRoomsFragment_to_detailChatRoomFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/chat_nav_graph.xml"
app:launchSingleTop="true" />
<action
android:id="@+id/action_masterChatRoomsFragment_to_chatRoomCreationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/chatRoomCreationFragment" />
<argument
android:name="LocalSipUri"
@ -83,10 +91,18 @@
app:popUpToInclusive="true" />
<action
android:id="@+id/action_masterContactsFragment_to_detailContactFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/contacts_nav_graph.xml"
app:launchSingleTop="true" />
<action
android:id="@+id/action_masterContactsFragment_to_contactEditorFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/contactEditorFragment"
app:launchSingleTop="false" />
<argument
@ -135,6 +151,10 @@
app:popUpToInclusive="true" />
<action
android:id="@+id/action_masterCallLogsFragment_to_detailCallLogFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/history_nav_graph.xml" />
</fragment>
<fragment
@ -191,12 +211,20 @@
android:defaultValue="false" />
<action
android:id="@+id/action_chatRoomCreationFragment_to_groupInfoFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/groupInfoFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/groupInfoFragment"
app:popUpToInclusive="true" />
<action
android:id="@+id/action_chatRoomCreationFragment_to_detailChatRoomFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/chat_nav_graph.xml"
app:launchSingleTop="true"
app:popUpTo="@+id/masterChatRoomsFragment"
@ -209,12 +237,20 @@
android:label="GroupInfoFragment" >
<action
android:id="@+id/action_groupInfoFragment_to_detailChatRoomFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/chat_nav_graph.xml"
app:launchSingleTop="true"
app:popUpTo="@+id/masterChatRoomsFragment"
app:popUpToInclusive="false" />
<action
android:id="@+id/action_groupInfoFragment_to_chatRoomCreationFragment"
app:enterAnim="@anim/enter_left"
app:exitAnim="@anim/exit_right"
app:popEnterAnim="@anim/enter_right"
app:popExitAnim="@anim/exit_left"
app:destination="@id/chatRoomCreationFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/chatRoomCreationFragment"
@ -247,53 +283,85 @@
android:name="org.linphone.activities.main.settings.fragments.SettingsFragment"
tools:layout="@layout/settings_fragment"
android:label="SettingsFragment" >
<action
android:id="@+id/action_SettingsFragment_to_"
app:destination="@id/settings_nav_graph.xml"
app:launchSingleTop="true" />
<action
android:id="@+id/action_settingsFragment_to_chatSettingsFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/chatSettingsFragment"
app:popUpTo="@+id/settingsFragment"
app:popUpToInclusive="false" />
<action
android:id="@+id/action_settingsFragment_to_callSettingsFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/callSettingsFragment"
app:popUpTo="@+id/settingsFragment"
app:popUpToInclusive="false" />
<action
android:id="@+id/action_settingsFragment_to_advancedSettingsFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/advancedSettingsFragment"
app:popUpTo="@+id/settingsFragment"
app:popUpToInclusive="false" />
<action
android:id="@+id/action_settingsFragment_to_accountSettingsFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/accountSettingsFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/accountSettingsFragment"
app:popUpToInclusive="true" />
<action
android:id="@+id/action_settingsFragment_to_audioSettingsFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/audioSettingsFragment"
app:popUpTo="@+id/settingsFragment"
app:popUpToInclusive="false" />
<action
android:id="@+id/action_settingsFragment_to_contactsSettingsFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/contactsSettingsFragment"
app:popUpTo="@+id/settingsFragment"
app:popUpToInclusive="false" />
<action
android:id="@+id/action_settingsFragment_to_videoSettingsFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/videoSettingsFragment"
app:popUpTo="@+id/settingsFragment"
app:popUpToInclusive="false" />
<action
android:id="@+id/action_settingsFragment_to_networkSettingsFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/networkSettingsFragment"
app:popUpTo="@+id/settingsFragment"
app:popUpToInclusive="false" />
<action
android:id="@+id/action_settingsFragment_to_tunnelSettingsFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/tunnelSettingsFragment"
app:popUpTo="@+id/settingsFragment"
app:popUpToInclusive="false" />
@ -384,6 +452,10 @@
android:label="PhoneAccountLinkingFragment" >
<action
android:id="@+id/action_phoneAccountLinkingFragment_to_phoneAccountValidationFragment"
app:enterAnim="@anim/enter_right"
app:exitAnim="@anim/exit_left"
app:popEnterAnim="@anim/enter_left"
app:popExitAnim="@anim/exit_right"
app:destination="@id/phoneAccountValidationFragment" />
<argument
android:name="Username"