Titanium Как переместить одно окно в другое с эффектом контроллера push view (анимация, как в iphone)

я новичок в титане. Кто-нибудь знает, как нажимать одно окно на другое с эффектом контроллера push view (анимация, как в iphone). Поскольку в документации большинство из них представляют собой модальное представление. Есть ли push-представление, как на iphone? Спасибо.


person Rh Jov    schedule 07.06.2013    source источник


Ответы (1)


Мы использовали анимацию для скольжения окон на 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, чтобы закрыть представление.

person Tevo D    schedule 07.06.2013