2013-09-21 4 views
0

вот моя проблема: Я поставил изображение с разрешением 200x200 в изображении с высотой и шириной как 200dip, но показанное изображение показалось больше 200x200, вот как я нашел проблему.ImageView кажется более крупным

Я использую ниже код, чтобы получить ширину и высоту экрана. И выяснил, что мой экран 540x800, но ширина изображения больше половины моего экрана.

WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); 

    width = wm.getDefaultDisplay().getWidth(); 
    height = wm.getDefaultDisplay().getHeight(); 

Есть ли кто-нибудь, кто может мне сказать почему. Ниже XML-

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation = "vertical" 
android:background = "@drawable/mainbg2" 
> 

<LinearLayout 
    android:orientation="horizontal" 
    android:id="@+id/layout_menu_normal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true"> 
    <ImageView 
    android:id="@+id/img_menu_normal" 
    android:layout_width="200dip" 
    android:layout_height="200dip" 
    android:src="@drawable/menu_normal"/> 
</LinearLayout> 
</RelativeLayout> 
+0

Какова плотность (пикселей на дюйм) экрана? – Henry

ответ

1

Проверьте это documentation.

Плотность-независимый пиксель (дп) виртуальный блок пикселей, которые следует использовать при определении макета пользовательского интерфейса, чтобы выразить размеры макета или положение в плотности-независимым способом.

Независимый от плотности пиксель эквивалентен одному физическому пикселю на экране с разрешением 160 точек на дюйм, который является базой плотности, принятой системой для экрана плотности среды. Во время работы система прозрачно обрабатывает любое масштабирование блоков dp, если необходимо, на основе по фактической плотности используемого экрана. Преобразование единиц dp в пиксельные пиксели просты: px = dp * (dpi/160). Например, на экране с разрешением 240 точек на дюйм 1 дп равен 1,5 физическим пикселям. Вы должны всегда использовать единиц dp при определении пользовательского интерфейса вашего приложения, чтобы обеспечить правильный дисплей вашего интерфейса на экранах с различной плотностью.

Таким образом, я предполагаю, что ваше устройство не является mdpi, которое использует большее отношение масштаба. Если вы хотите сделать точный размер пикселя на своем устройстве, вы можете использовать 200px. Но сначала проверьте ссылку на документацию выше.

+0

Спасибо, я этого раньше не знал. Теперь мой код работает хорошо. – flexwang

0

это дисплей 200x200 дп размер изображения в окне вы можете проверить с помощью этого изменения XMP в вас файл

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@android:color/white" 
android:orientation="vertical" > 

<LinearLayout 
    android:id="@+id/layout_menu_normal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:orientation="horizontal" > 

    <ImageView 
     android:id="@+id/img_menu_normal" 
     android:layout_width="200dip" 
     android:layout_height="200dip" 
     android:background="@android:color/black" 
     android:src="@drawable/ic_launcher" /> 
</LinearLayout> 

я надеюсь, что вы можете understant, что случилось там. Я устанавливаю изображение в центре относительного вида и меняю цвет фона изображения на черный и основной вид bg на рабочий код white.it.

Смежные вопросы