Titanium 如何将一个窗口推送到另一个具有推送 View Controller 效果的窗口(像iPhone中的动画)

标签 titanium titanium-mobile

我是钛新手。有谁知道如何将一个窗口推送到另一个具有推送 View Controller 效果的窗口(像 iPhone 中的动画)。因为在文档中大多数都是模态演示。有像 iPhone 上那样的推送 View 吗?谢谢。

最佳答案

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

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

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

无论如何,我们都会将传入 View 组合为仅在客户区域右侧显示一个像素:

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

这允许 View 正确组合,因为 Android/Ti 在 View 出现在屏幕上之前不会真正开始绘制。我们在继续动画之前等待布局后事件。合成完成后,我们将 View 设置为动画:

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

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

该 View 现在已准备好供用户交互。

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

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

我们 Hook android:back 和 header back 按钮来关闭 View 。

关于Titanium 如何将一个窗口推送到另一个具有推送 View Controller 效果的窗口(像iPhone中的动画),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16978119/

相关文章:

android - 有什么办法可以在 android 和 i-os 的钛合金应用程序中使用 sqlite 数据库吗?

ios - iOS-Titanium 中的透明删除

android - 我可以阻止移动应用程序关闭吗

android - 我如何告诉 Titanium 根据屏幕密度选择应用程序图标?

android - Titanium Android 模块升级到 SDK 6.0.0

javascript - Titanium 将数据传递给 createHTTPClient

php - 如何在 Titanium (Android) 中以 jpg 或 png 格式在服务器上上传图像?

Titanium Appcelerator - 我应该使用合金框架吗?

android - 使用 Titanium 创建的 Android 应用程序数据存储在 Mac 中的位置

titanium - Titanium SDK 在其支持的各种平台(2013 年)中如何工作?