2013-09-21 202 views
0

這是我的問題: 我把一個分辨率200x200的圖像放在一個imageview中,高度和寬度都是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

密度獨立像素(DP) 定義UI佈局時應該使用,以表達佈局尺寸或位置的密度無關的方式的虛擬像素。

與密度無關的像素相當於160 dpi屏幕上的一個物理像素,這是系統爲「中等」密度屏幕假定的基準密度。在運行時,系統 根據需要透明地處理dp單位的任何縮放比例,基於所用屏幕的實際密度 。將dp單元 轉換爲屏幕像素很簡單:px = dp *(dpi/160)。例如,在一個 240 dpi屏幕上,1 dp等於1.5個物理像素。定義應用程序的UI時,應始終使用 dp單位,以確保在不同密度的屏幕上正確顯示您的UI的 。

所以我假設你的設備不是使用更大比例的mdpi。如果你想在你的設備上製作精確的像素尺寸,你可以使用200px。但首先檢查上面的文檔鏈接。

+0

謝謝,我以前不知道。現在我的代碼運行良好。 – flexwang

0

它顯示200X200 DP尺寸圖像鑑於你的文件

<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發生什麼那裏你可以檢查使用此XMP變化。我在相對視圖的中心設置圖像,並將imageview的背景顏色更改爲黑色,將主視圖bg顏色更改爲white.it的工作代碼。