Durandal在android上的转换速度较慢

Durandal transition slow on android

本文关键字:速度 转换 android Durandal      更新时间:2023-09-26

我将使用Phonegap+Durandal开发一个混合应用程序。到目前为止,我正在开发一款经典的Web应用程序,并计划在对该应用程序的功能集感到满意后立即切换到混合应用程序。

到目前为止,我意识到在使用Nexus 4或Nexus 7平板电脑时,Durandal在从一个视图切换到另一个视图时执行的转换非常草率且不流畅。

有人知道如何加快速度吗?最后的选择是转换,但这将是非常可悲的=(

更新:Ok发现,例如entrance.js似乎使用Javascript动画而不是CSS3动画。猜测这是从哪里开始修复

我确实使用了这个库:css3传输比默认快得多

并更改入口.js(可能你需要适应,但这对我有效)

define(['../system'], function(system) {
var fadeOutDuration = 100;
var entrance = function(parent, newChild, settings) {
    return system.defer(function(dfd) {
        function endTransition() {
            dfd.resolve();
        }
        function scrollIfNeeded() {
            if (!settings.keepScrollPosition) {
                $(document).scrollTop(0);
            }
        }
        if (!newChild) {
            scrollIfNeeded();
            if (settings.activeView) {
                $(settings.activeView).transition({
                      opacity: 1,
                      scale: 0.3,
                      duration: duration,
                      easing: 'in',
                      complete: function(){
                        $(settings.activeView).css('display' ,'none');
                            if (!settings.cacheViews) {
                                ko.virtualElements.emptyNode(parent);
                            }
                            endTransition();
                        }
                    });

            } else {
                if (!settings.cacheViews) {
                    ko.virtualElements.emptyNode(parent);
                }
                endTransition();
            }
        } else {
            var $previousView = $(settings.activeView);
            var duration = settings.duration || 500;
            function startTransition() {
                scrollIfNeeded();
                if (settings.cacheViews) {
                    if (settings.composingNewView) {
                        ko.virtualElements.prepend(parent, newChild);
                    }
                } else {
                    ko.virtualElements.emptyNode(parent);
                    ko.virtualElements.prepend(parent, newChild);
                }
                var startValues = {
                    //marginLeft: '90%',
                    //marginRight: '-20px',
                    opacity: 0,
                    scale: 0.3,
                    display: 'block'
                };
                var endValues = {
                    //marginRight: 0,
                    //marginLeft: 0,
                    opacity: 1,
                    scale: 1
                };
                $(newChild).page();
                $(newChild).trigger('create');
                $(newChild).css(startValues);
                $(newChild).transition(
                    {
                      marginRight: 0,
                      marginLeft: 0,
                      opacity: 1,
                      scale: 1,
                      duration: duration,
                      easing: 'in',
                      complete: endTransition
                    });
                    //startValues,500, 'ease');
                //$(newChild).transition(endValues, duration, 'swing', endTransition);
                //$(newChild).transition({ opacity: 0.1, scale: 0.3 }, 500, 'in', function() {..});
                //endTransition();
            }
            if ($previousView.length) {
                $previousView.transition({
                      opacity: 0,
                      scale: 0.3,
                      duration: 500,
                      easing: 'in',
                      complete: function(){
                          $previousView.css('display' ,'none');
                          startTransition();
                      }
                });
                //$('.news').css('display','none');
                //$previousView.fadeOut(fadeOutDuration, startTransition);
            } else {
                startTransition();
            }
        }
    }).promise();
};
return entrance;

});

抱歉我英语不好。