2

我是钛新手。有谁知道如何将一个窗口推送到另一个具有推送视图控制器效果(像 iphone 中的动画)。因为在文档中大多数是模态演示。是否有像我们在 iphone 上的推送视图?谢谢。

4

1 回答 1

2

我们一直在使用动画在 Android 上滑动窗口,模拟 iOS 功能。我们最终制作了自己的窗口管理器来管理差异,但我已经提取了相关的动画代码。

我们在 iOS 上使用导航组中的窗口,在 Android 上使用单个窗口中的视图。

我们有一个名为 的客户区视图vwBody,您将在此处看到它的引用。这是我们组合导航标题下的客户区。如果您没有模拟整个导航组功能,那么这可能只是主窗口。

在任何情况下,我们都会在客户区域的右侧构建仅显示一个像素的传入视图:

// vwBody is preexisting view defining the client area

var newview = Ti.UI.createView( {
    name: name,
    left: vwBody.size.width - 1,
    top: 0,
    width: vwBody.size.width,
    height: vwBody.size.height } );

// compose the view here

vwBody.add(newView);
newView.addEventListener('postlayout', waitForWindowPaint);

这允许视图正确组合,因为 Android/Ti 在视图显示在屏幕上之前不会真正开始绘制。在继续动画之前,我们等待 postlayout 事件。合成完成后,我们为视图设置动画:

function waitForWindowPaint()
{
  newView.animate({ left: 0, duration:300 }, 
    function(){ /* whatever to do post animation */ });

  newView.removeEventListener("postlayout", waitForWindowPaint);
}

该视图现在已准备好进行用户交互。

当我们关闭视图时,我们将其动画化:

newView.animate({ left: curWin.size.width, opacity: 0, duration:300 },
   function(){ vwBody.remove(newView); });

我们钩住 android:back 和 header back 按钮来关闭视图。

于 2013-06-07T13:34:14.357 回答