2016-10-17 13 views
0

初めてのモバイルAIRアプリケーションを作成しました。私のiPadでは、レイアウトは暗い失敗です。 Flash Builderシミュレータで完璧に見えます。Adob​​e Air - モバイルの幅と高さ

私はアプリケーションがポートレートモードで自動向きなしで実行するように設定しました。 160 DPIから始まり、スケールアップします。アプリケーションが完了したら、ステージの幅と高さを取得し、これらの数値を使用して、自分のDataGridのすべてのボタンと列の幅のレイアウトを計算します。 iPadにアプリケーションをロードすると、すべてのボタンが離れすぎて広がっていて、いくつかは画面から離れています。データグリッドはすべて画面に収まるはずですが、列のうち4つが画面からはみ出しました。

これは、ポートレートモードではなく横長モードで画面の幅を計算した場合とほぼ同じです。したがって、2つの質問があります:

1)アプリケーションを縦向きにレイアウトする場合、横幅は縦向きか横向きかですか?

2)さまざまな画面の密度でモバイルデバイスにすべてをレイアウトする方法が混乱しています。アプリの幅と高さを取得し、距離と間隔をピクセル単位で設定するか、パーセンテージを使用する方が良いでしょうか?

ありがとうございました。これは残念だった。

編集: アプリケーションが完了すると、私は彼らが、その後アプリの幅と高さを取得し、自分自身をレイアウトできるように、私の残りのコンポーネントは、アプリケーションがロードされていることを知らせるためにカスタムイベントをディスパッチ適切に。 、それは私の記述ファイルで何かしなければならように私は感じ

<aspectRatio>portrait</aspectRatio> 

<autoOrients>false</autoOrients> 
<fullScreen>true</fullScreen> 
<visible>true</visible> 
<softKeyboardBehavior>pan</softKeyboardBehavior> 

:、私は次の値が設定されている私のアプリケーション記述ファイルで

protected function appCreationCompleteHandler(event:FlexEvent):void { 
    // Dispatch an event to the rest of the application that the application is complete so that I can calculate all of my layout distances 
    var e:Event = new Event("appComplete", true); 
    dispatchEvent(e); 
    appWidth = stage.stageWidth; 
    appHeight = stage.stageHeight; 
} 

:私のメインアプリでは、私はこのコードを持っていますそれはシミュレータに完全にレイアウトされているだけで、デバイス上には配置されていないからです。高さの値はデバイス上で正しいように見えますが、幅のレイアウトはちょうどオフです。

答えて

0

screenWidthとscreenHeightは実際の幅と高さを返していますが、DPIを固定値に設定しているので実際の可視領域はそれよりも小さいですか?

実際のサイズを再計算するにはCapabilities.screenDPIを使用できますが、問題は多くのデバイスで非常に信頼性が低い(間違ったDPIを返す)ということです。

は、Screenクラスで幅と高さを取得してください:私は最終的にそれが働いてしまった

var screen:Screen = Screen.getScreensForRectangle(stage.nativeWindow.bounds)[0]; 
var width:int = screen.visibleBounds.width; 
var height:int= screen.visibleBounds.height; 
+0

私はちょっとした情報で自分の投稿を編集しました。私はアプリケーションの幅と高さをラベルコンポーネントに追跡し、1536x2048と表示しました。これは私のiPadに適しています。実際には160DPIに基づいて何も計算しません。これは、AIRモバイルプロジェクトを設定するときに選択した値です。スケーリングは自動的に行われます。ステージの幅と高さに基づいてすべてを計算しますが、これは正しいと思われます。私はそれが私が気づいていない記述子ファイルの基本的な設定であると感じます。なぜなら、数学はすべて私が現在持っている情報に基づいてチェックアウトするからです。 – sax

0

。私は160DPIでアプリを開発するためにボックスをチェックしていたので、私が計算したすべての距離または幅はAIRによってスケーリングされたものでした。ステージの幅に基づいてスペーシングを計算しても、ステージDPIが160より大きい場合、計算した答えはスケーリングされます。だから私は幅がパーセンテージに基づいているグループにすべての私のボタンを入れ終わった。このように、私は実際にはすべてのデバイスのスケーリングと計算について多くのことを考える必要はありません、AIRは私のために重い持ち上げを行います。