Router 提供了多种转场动画,均由原生实现,不管是通过何种方式打开,均可设置动画。
可选动画类别 | 效果 |
---|---|
moveFromTop |
上进上出 |
moveFromRight |
右进右出(默认值) |
moveFromLeft |
左进左出 |
moveFromBottom |
下进下出 |
Fade |
淡入淡出 |
NoAnimation |
无动画 |
moveFromCenter |
从中间开始缩放比例为从60%-100%,透明度从0-1 |
Ext.open('Home', {
param: {
name: 'home'
},
sceneConfigs: 'moveFromRight'
});
只需要拼入参数 sceneConfigs
即可
scheme://react/open?hybridId=qrn-demo&pageName=demo&sceneConfigs=moveFromRight
QReactNative.startReactActivity
Bundle bundle = new Bundle();
bundle.putString("sceneConfigs", "moveFromRight");
QReactNative.startReactActivity(activity, hybridId, pageName, bundle);
String animationType = "moveFromRight";
QReactViewModule reactViewModule QReactNative.createReactModule(hybridId, pageName, jsonParams, animationType, reactRootView);
qReactHelper.doCreate(reactViewModule, hybridId, pageName, false, launchOptions, listener);
QRCTVCCreater
打开vc [QRCTVCCreater createVCWithHybridId:hybridID
moduleName:moduleName
initialProperties:initProps
hasLoading:YES
completionHandler:^(QRCTViewController *qrctVC, NSError *error) {
if (!qrctVC) {
return;
}
// 这里要设置qrctVC的animation属性,就会在页面pop的时候以相应的动画pop回来
qrctVC.animation = [QRCTVCController animationWithSceneConfigs:@"PushFromRight"];
dispatch_async(dispatch_get_main_queue(), ^{
// 这里可以使用QRCTVCController来push
[QRCTVCController pushVC:qrctVC withAnimation:[QRCTVCController animationWithSceneConfigs:@"PushFromRight"]];
//或者也可以使用大客户端提供的 VCController 来 push 具体支持动画方式看下表
[VCController pushVC:qrctVC WithAnimation:[VCAnimationBottom defaultAnimation]];
});
}];
大客户端 VCController
支持的动画类型
可选动画类别 | 效果 |
---|---|
VCAnimationTop |
上进上出 |
VCAnimationClassic |
右进右出(默认值) |
VCAnimationLeft |
左进左出 |
VCAnimationBottom |
下进下出 |
VCAnimationFade |
淡入淡出 |
nil |
无动画 |
VCAnimationCenter |
从中间开始缩放比例为从60%-100%,透明度从0-1 |
QRCTViewCreater
创建 RootView
并自定义 VC
由于试图控制器是自定义的,所以需要自行实现专场动画