2

チタン初心者です。ドキュメントでは、ほとんどがモーダル プレゼンテーションであるため、プッシュ ビュー コントローラ効果 (iPhone のようなアニメーション) を使用して、あるウィンドウを別のウィンドウにプッシュする方法を知っている人はいますか。iPhone のようなプッシュ ビューはありますか?ありがとうございます。

4

1 に答える 1

2

iOS 機能をシミュレートして、アニメーションを使用して Android でウィンドウをスライドさせてきました。違いを管理するために独自のウィンドウ マネージャーを作成することになりましたが、関連するアニメーション コードを抽出しました。

iOS ではナビゲーション グループでウィンドウを使用し、Android では単一のウィンドウでビューを使用します。

と呼ばれるクライアント領域の単一のビューがあり、vwBodyここで参照されます。これは、構成されたナビゲーション ヘッダーの下のクライアント領域です。ナビゲーション グループ機能全体をシミュレートしていない場合、これは単なるメイン ウィンドウである可能性があります。

いずれにせよ、クライアント領域の右側に 1 ピクセルだけを表示する着信ビューを構成します。

// 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 とヘッダーの戻るボタンの両方をフックして、ビューを閉じます。

于 2013-06-07T13:34:14.357 に答える