2012-02-06 12 views
1

他に誰かがこれに気付いていますか?私はオリエンテーションの変更を処理するために、以下のコールバックを作成しなければなりませんでした:(oops編集は追加するのを忘れてしまった)GetAndSetInitialOrientation()は最初に呼び出されたので、後の変更はその初期値条件付き)。私は本当にこれが安全ではないことを心配しています! window.orientationはデバイスかブラウザから来ますか? I.EはHoneycomb上のブラウザ(Opera miniのイルカなど)は同じように動作するのでしょうか、それとも単にネイティブブラウザとなるのでしょうか?Android Honeycombには、イベントのオリエンテーション値がありませんか?

function GetAndSetInitialOrientation() { 
    var ori; 
    if(Interface.Device.IsHoneyComb()) { 
     ori = window.orientation != 0 ? "portrait" : "landscape"; 
    } else { 
     ori = window.orientation == 0 ? "portrait" : "landscape"; 
    } 

    Data.$html.removeClass('landscape portrait').addClass(ori); 
} 

$(window).bind('orientationchange', function(event) { 
    HandleOrientationChange(event); 
    RouteBasedOnOrientationSwitch(); 
}); 

function HandleOrientationChange(event) { 
    Data.$html.removeClass('landscape portrait'); 
    if(Interface.Device.IsHoneyComb()) { 
     Data.$html.addClass(event.orientation == 'landscape' ? 'portrait' : 'landscape'); 
    } else { 
     Data.$html.addClass(event.orientation); 
    } 

    Interface.Utility.UpdateHomeLinksURLs(); 
} 

答えて

1

「window.orientation == 0はポートレートを意味します」という仮定は、ポートレートベースのデバイスにのみ適用されます。ほとんどのタブレット(ハニカム/アイスクリームサンドウィッチにかなり大きくマップされています)は風景ベースです。その場合は0が風景に、ROTATE_90とROTATE_270は似顔絵にマッピングされます。

あなたの現在のコードは、すべてのデバイスがポートレートベースまたはハニカムのいずれかになっていれば、相互に排他的です。しかし、ポートレートベースのハニカムデバイスがあり、両方のタイプのデバイスでIce Cream Sandwichが動作するため、より優れた検出方法が必要です。

親のwebview内で検出してjavascriptに送信するres/values-port/bools.xmlとres/values-land/bools.xmlにブール値を挿入することもできます。もう一つは、screen.widthとscreen.heightをチェックし、どれが大きいかを確認することです。すべてのことが言っている、最も理想的なシナリオは、とにかくあなたは、とにかくWebページでやっていたことを行うには、とにかくwebviewにいるので、検出された方向に関係なく、いずれかの方法で良いレイアウトを与える。

+0

アレクサンダー非常に有益なコメントをいただきありがとうございます!私の問題は、ある向きで同じビューを提供するだけではありません。残念ながら、1つのセクションでは、向きや向きの変更に基づいてルーティングされる2つの全く異なるページがあります。高度なコーポレートとしてそれを変えず、大きなデザインプロセスを経ています。だから私はデバイスの向きを正確に検出する必要があります。私はあなたがres/values-port/bools.xmlで何を意味しているのかよくわからないのですが、その方法について詳しく説明できますか?私はHTML/jquerymobileなどを使用していますそれは可能ですか? – Baconbeastnz

+0

私は、ユーザーが市場からダウンロードするAndroidベースのアプリケーションを構築していると仮定しました。ウェブサイトを構築している場合、そのオプションは適用されません。screen.widthとscreen.heightを確認します。幅が大きい場合は、横向きです。高さが大きければ、それは肖像画です。 –

+0

私はそれを言及していたはずです。それはまさに私がやったことです、あなたの助けを借りてくれてありがとう、タブレットを含むすべてのアンドロイドデバイスを操作していますし、欠陥なしで働いているようです。それは本当にその周りの唯一の方法だと思われます。 – Baconbeastnz

関連する問題