2011-12-25 15 views
2

私は実際のデバイスに表示されているものとエミュレータでアプリケーションを実行するときに表示されるものとの間にいくつかの相違が見られるアンドロイドアプリケーションに取り組んでいます。Android:エミュレータUIとデバイスUIの相違

ここに関連コードがあります。

I形状を定義するXMLファイルを持っている - シンプル青い四角形:ここに示した、私は、その形状を使用する別の "ビュー" のXMLファイルを有する

<?xml version="1.0" encoding="utf-8"?> 

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <corners 
     android:radius="4dp" /> 
    <gradient 
     android:angle="270" 
     android:startColor="#449def" 
     android:endColor="#2f6699" /> 
    <stroke 
     android:width="1dp" 
     android:color="#2f6699" /> 
</shape> 

を:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <View 
     android:background="@drawable/blue_rectangle" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
    /> 

</LinearLayout> 

最後に、私はRelativeLayoutを拡張するカスタムViewGroupを持っています。このカスタムレイアウトには、上で説明したビューの子ビューオブジェクトがあります。カスタムレイアウトは、レイアウトプロセス自体を処理するようにonLayoutメソッドをオーバーライドします。このコードはここにある:あなたが見ることができるように

@Override 
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) 
{ 
    //Layout the children of this viewgroup 
    int childCount = this.getChildCount(); 
    for (int i = 0; i < childCount; i++) 
    { 
     NodeView view = (NodeView) this.getChildAt(i); 
     view.layout(40, 40, 40, 40); //Hard code the child object position 
    } 
} 

、私は位置(40、40)を持つように子ビューをハードコーディングし、40ディップの幅と高さを持っています。

残念ながら、私は様々な結果を得ています。これは、Androidのエミュレータ(Androidの開発ツールの一部)に次のようになります。

Android emulator output

これは、それが私の実際のAndroidデバイス上のように見えるものである(これは私はそれが見えるようにしたいものです同様):

Android device output

は、青いボックスのサイズの格差の原因は何?何か案は?ありがとう!

+0

エミュレータはどのバージョンを実行していて、Androidのデバイスとバージョンはどのバージョンで動作していますか? – zostay

+0

申し訳ありません、デバイスはAndroid 2.2.1を実行しているLG Optimus Vの携帯電話です。エミュレータはAndroid 2.2を実行しています。 – David

答えて

3

AVDをAbstracted LCD Densityと呼ぶと、エミュレータに設定が適用されます。デバイスと同じに設定されていることを確認してください。それが動作するかどうかを確認します。

+1

ありがとう!私はより正確に(320x480解像度、180dpi)私の携帯電話をミラーするAVDを作成し、それは素晴らしい作品です。しかし、彼らは私たちが複数のディスプレイ解像度のために開発することをどのように期待していますか?青色のボックスのサイズとオレンジ色の境界線を持つ白い四角形のサイズはどちらも40x40ディップにする必要があります。しかし、他のAVDではサイズが異なります。どのように説明することができますか? – David

+0

このリンクはそれを説明するのに役立ちますhttp://developer.android.com/guide/practices/screens_support.html –