Изображение шириной 320 dp, занимающее весь экран эмулятора Android - PullRequest
0 голосов
/ 14 июля 2011

У меня есть баннер шириной 320dp, но он заполняет всю ширину эмулятора Android 480x800.

Вот 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. Тогда почему баннер занимает всю ширину?

Ответы [ 2 ]

1 голос
/ 14 июля 2011

dip означает пикселей, не зависящих от плотности .Ваш эмулятор 480x800, скорее всего, имеет HDPI (высокую плотность или высокие точки на дюйм), что означает, что 320dp будет преобразовывать в 320 * 1,5 фактических пикселей (что составляет 480).Только на экране MDPI (средней плотности), где коэффициент масштабирования равен 1, вы получите 320 пикселей.

Коэффициент масштабирования для текущего экрана можно получить следующим образом:

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

Если вы действительно хотите, чтобы он имел ширину 320 пикселей независимо от плотности экрана (это вообще не рекомендуется), вы можете просто указать:

android:layout_width="320px"
0 голосов
/ 14 июля 2011

dip - это не физические пиксели, а вымышленное число, которое зависит от плотности отображения. Больше информации здесь:

http://developer.android.com/guide/practices/screens_support.html

...