Titanium:Window 转换在 Android 上不起作用

Titanium: Window transitions not working on Android

我想在 Android 中打开和关闭 window 时添加 window 转换。

在此处的文档中描述了为 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)
}

我试过以下方法:

方法一

Alloy.createController('foo')
    .getView().open({
        activityEnterAnimation: Ti.Android.R.anim.fade_in,
        activityExitAnimation: Ti.Android.R.anim.fade_out
    });

上面的进入动画按预期工作。但是,淡出不起作用。

方法二

Alloy.createController('foo')
    .getView().open({
        activityEnterAnimation: Titanium.UI.Android.TRANSITION_FADE_IN,
        activityExitAnimation: Titanium.UI.Android.TRANSITION_FADE_OUT
    });

淡入淡出均无效

方法三

"#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,
}

无论哪种情况,淡入淡出都不起作用。

叶海亚乌丁

window 过渡在 android 中不起作用,如果您想为 windows 设置动画,则必须使用带有 settimeout 的动画。及其习俗。

你有两个选择

activity*过渡

目前无法在没有共享元素的情况下使用 activity*Transitionshttps://jira.appcelerator.org/browse/TIMOB-20507 处有一张显示修复的公开票(需要针对第一个 window 进行调整,或者如果您使用修复,则在打开第一个 window 时添加 animated:false) .

activity*动画

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*转换

的解决方法

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);

请记住,它们是 window 的 creation only 属性,并不像 activity*Animation

那样用作 window.open() 的参数