feat: add a slide animation for modals on Android

This commit is contained in:
Satyajit Sahoo
2020-11-16 18:05:05 +01:00
parent 422dfc55dd
commit 6f326cf0c5
6 changed files with 106 additions and 24 deletions

View File

@@ -5,7 +5,6 @@ import type { ParamListBase } from '@react-navigation/native';
import {
createStackNavigator,
StackScreenProps,
StackNavigationOptions,
} from '@react-navigation/stack';
import Article from '../Shared/Article';
import Albums from '../Shared/Albums';
@@ -71,13 +70,11 @@ const AlbumsScreen = ({ navigation }: StackScreenProps<ModalStackParams>) => {
);
};
const ModalPresentationStack = createStackNavigator<ModalStackParams>();
const ModalStack = createStackNavigator<ModalStackParams>();
type Props = StackScreenProps<ParamListBase> & {
options?: StackNavigationOptions;
};
type Props = StackScreenProps<ParamListBase>;
export default function SimpleStackScreen({ navigation, options }: Props) {
export default function ModalStackScreen({ navigation }: Props) {
React.useLayoutEffect(() => {
navigation.setOptions({
headerShown: false,
@@ -85,8 +82,8 @@ export default function SimpleStackScreen({ navigation, options }: Props) {
}, [navigation]);
return (
<ModalPresentationStack.Navigator mode="modal" {...options}>
<ModalPresentationStack.Screen
<ModalStack.Navigator mode="modal">
<ModalStack.Screen
name="Article"
component={ArticleScreen}
options={({ route }) => ({
@@ -94,12 +91,12 @@ export default function SimpleStackScreen({ navigation, options }: Props) {
})}
initialParams={{ author: 'Gandalf' }}
/>
<ModalPresentationStack.Screen
<ModalStack.Screen
name="Albums"
component={AlbumsScreen}
options={{ title: 'Albums' }}
/>
</ModalPresentationStack.Navigator>
</ModalStack.Navigator>
);
}

View File

@@ -40,7 +40,7 @@ import { restartApp } from './Restart';
import LinkingPrefixes from './LinkingPrefixes';
import SettingsItem from './Shared/SettingsItem';
import SimpleStack from './Screens/SimpleStack';
import ModalPresentationStack from './Screens/ModalPresentationStack';
import ModalStack from './Screens/ModalStack';
import StackTransparent from './Screens/StackTransparent';
import StackHeaderCustomization from './Screens/StackHeaderCustomization';
import BottomTabs from './Screens/BottomTabs';
@@ -66,9 +66,9 @@ type RootDrawerParamList = {
const SCREENS = {
SimpleStack: { title: 'Simple Stack', component: SimpleStack },
ModalPresentationStack: {
title: 'Modal Presentation Stack',
component: ModalPresentationStack,
ModalStack: {
title: 'Modal Stack',
component: ModalStack,
},
StackTransparent: {
title: 'Transparent Stack',