2014-01-23 29 views
0

首先,我不確定我寫錯代碼的位置。Android - 在不同設備上裁剪的圖像

正如你在截圖中看到的,有3種不同的設備。注意紅色框內的圖像。在的XperiaŽ超屏幕上的圖像已被裁剪,但其餘的是好的:

三星Galaxy SII(Jelly Bean)的

Samsung Galaxy SII (Jelly Bean)

的Nexus 7(奇巧)

Nexus 7 (KitKat)

Xperia Z Ultra(KitKat)

Xperia Z Ultra (KitKat)

我把圖像放在一個ListView中,然後在適配器內充氣。以下是自定義行的佈局代碼:

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/img_item" 
     android:src="@drawable/error" 
     android:adjustViewBounds="true" 
     android:scaleType="centerCrop" /> 

</RelativeLayout> 

在適配器中,我使用了Picasso圖像加載器來加載圖像。我沒有設置任何圖像縮放選項。

public class ItemPhotoAdapter extends BaseAdapter { 
    ... 

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     ... 

     Picasso.with(context) // 
       .load(iim.getResized()) // 
       .placeholder(R.drawable.placeholder) // 
       .error(R.drawable.error) 
       .into(vh.item_image); 

     return view; 
    } 
} 

任何人都知道這裏發生了什麼?

回答

2

看起來這與android:scaleType="centerCrop"有關,以及如何以不同的屏幕尺寸/密度顯示相同尺寸的圖像。我認爲這與畢加索沒有任何關係。

Xperia的行高似乎比較小。

This Android documentation on the different ScaleTypes may be helpful。您可能需要針對不同屏幕類型的行設置顯式高度(特定或最小/最大),這取決於最終產品的需求。

圖像大小不同的屏幕密度和尺寸是安卓:(頭痛,你可能最終需要一些計劃調整,如果你真的需要一些具體的事情。在OnPreDrawListener回調可能會有所幫助。

你可以看到https://stackoverflow.com/a/4398578/413254

和官方文檔在這裏:這裏使用這種回調的例子https://developer.android.com/reference/android/view/ViewTreeObserver.OnPreDrawListener.html

+0

啊,我知道這一天會來的任何建議如何使編程工作,我只是個初學者,會愛?學習如何; _; – AimanB

+0

@AimanB查看我更新的帖子。這是關於具體,因爲我可以得到而不知道確切需要顯示在每個圖像/行:) – loeschg