我想在Android中打开和关闭窗口时添加窗口过渡。
在此处的文档中描述了为Windows创建转换:http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.Window
foo.js有以下tss文件:
"#win": {
theme: "Theme.AppCompat.Translucent.NoTitleBar",
fullscreen: false, // To make it heavy-weight (although this should not be needed for > v3.2.0)
}
我尝试过以下方法:
方法1
Alloy.createController('foo')
.getView().open({
activityEnterAnimation: Ti.Android.R.anim.fade_in,
activityExitAnimation: Ti.Android.R.anim.fade_out
});
以上输入动画按预期工作。但是,淡出效果不起作用。
方法2
Alloy.createController('foo')
.getView().open({
activityEnterAnimation: Titanium.UI.Android.TRANSITION_FADE_IN,
activityExitAnimation: Titanium.UI.Android.TRANSITION_FADE_OUT
});
淡入或淡出无效
方法3
"#win[platform=android]": {
activityEnterAnimation: Titanium.UI.Android.TRANSITION_FADE_IN,
activityExitAnimation: Titanium.UI.Android.TRANSITION_FADE_OUT,
// OR
// activityEnterAnimation: Ti.Android.R.anim.fade_in,
// activityExitAnimation: Ti.Android.R.anim.fade_out,
}
无论是淡入还是淡出都不适用于任何一种情况。
答案 0 :(得分:2)
您有两个选择
<强>活性*跃迁强>
如果没有sharedElement,目前无法使用activity*Transitions
。 https://jira.appcelerator.org/browse/TIMOB-20507处有一个打开的票证,显示修复(需要针对第一个窗口进行调整,或者在打开第一个窗口时添加animated:false
,如果您使用此修复程序)。
<强>活性*动画强>
activity*Animation
动画的工作原理如下:
var win = Ti.UI.createWindow({
backgroundColor: '#fff'
});
var win2 = Ti.UI.createWindow({
backgroundColor: '#f00'
});
var btn = Ti.UI.createButton({
title: "open"
});
win.add(btn);
var btn2 = Ti.UI.createButton({
title: "close"
});
win2.add(btn2);
btn2.addEventListener("click", function() {
win2.close({
activityExitAnimation: Ti.Android.R.anim.fade_out
});
});
btn.addEventListener("click", function() {
win2.open({
activityEnterAnimation: Ti.Android.R.anim.fade_in,
activityExitAnimation: Ti.Android.R.anim.fade_out
});
});
win.open();
使用6.1.2.GA和6.2.2.GA进行测试
活动的变通方法*过渡
activity*Transitions
的工作原理如下:
var win = Ti.UI.createWindow({
backgroundColor: '#fff',
activityEnterTransition: Titanium.UI.Android.SLIDE_RIGHT,
activityExitTransition: Titanium.UI.Android.TRANSITION_EXPLODE
});
var win2 = Ti.UI.createWindow({
backgroundColor: '#f00',
activityEnterTransition: Titanium.UI.Android.SLIDE_RIGHT,
activityExitTransition: Titanium.UI.Android.TRANSITION_EXPLODE
});
// Create label in window A with a unique transitionName.
var titleInWinA = new Ti.UI.createLabel({
text: 'Top 10 pics from Mars!',
left: 70,
top: 6,
width: 200,
height: 30,
transitionName: 'title',
color: "#000"
});
win.add(titleInWinA);
var btn = Ti.UI.createButton({
title: "open"
});
btn.addEventListener("click", function() {
win2.addSharedElement(titleInWinA, "title");
win2.open();
});
win.add(btn);
win.open();
var titleInWinB = new Ti.UI.createLabel({
text: 'Top 10 pics from Mars!',
left: 50,
top: 10,
width: 200,
height: 30,
transitionName: 'title',
color: "#000"
});
win2.add(titleInWinB);
请注意,它们是creation only
窗口的属性,不会用作window.open()
的参数activity*Animation
答案 1 :(得分:1)
Yahya Uddin
窗口过渡在android中不起作用,如果要为窗口设置动画,则必须使用settimeout动画。和它的习惯。