0

320dpのバナーがありますが、480x800アンドロイドエミュレータの全幅を満たしています。ここで320dpの幅広い画像がAndroidエミュレータの画面全体を占めています

は、バナーのXMLです:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/add_banner" 
android:layout_width="320dip" 
android:layout_height="50dip" 
> 
    <ImageView android:id="@+id/add_image" 
    android:layout_width="320dip" 
    android:layout_height="50dip" 
    android:src="@drawable/your_ad_here" 
    /> 

    <Button android:id="@+id/btn_addclose" 
    android:layout_width="25dip" 
    android:layout_height="25dip" 
    android:gravity="center" 
    android:layout_alignTop="@id/add_image" 
    android:layout_alignRight="@id/add_image" 
    android:text="x" 
    /> 
</RelativeLayout> 

私のように私のmain.xmlファイルに含まれている:私のエミュレータがあることを確認するために

<include android:id="@+id/add_banner" 
layout="@layout/tlp_add_banner" 
android:layout_width="320dp" 
android:layout_height="50dp" 
android:layout_alignParentBottom="true" 
android:layout_alignParentRight="true"/> 

480x800私は実行時にメトリックを記録しました。それは480x800です。それでなぜバナーが幅全体を占めるのですか?

答えて

1

dip密度非依存のピクセルを意味します。あなたの480x800エミュレータはおそらくHDPI(高密度または1インチあたりの高ドット)です。つまり、320dpは320 * 1.5の実際のピクセル(480)に変換されます。スケールファクタが1のMDPI(中濃度)画面でのみ、320ピクセルが実際に得られます。

あなたはこのような現在の画面のスケール係数を取得することができます:あなたは本当にそれが320個のピクセルワイドになりたい場合は

float scale = getResuorces().getDisplayMetrics().density; 

にかかわらず、画面密度の(これは全く推奨されません)

+0

私は代替リソースを提供しようとしましたが、240dpi(高密度)の320x50イメージを 'drawable-hdpi'フォルダに入れました。それでも助けてくれなかった。 –

+1

Androidは実際の画像に設定されているDPIを気にしません(メタデータだけであり、多くの場合間違っている可能性があります)。 480x75の画像を 'drawable-hdpi'に入れてください(幅と高さを1.5倍しただけです)。 – Felix

関連する問題