2014-09-04 2 views
1

Я использую услугу с youtube, где он возвращает мне URL. С помощью этого URL-адреса я переношу NetworkImageView. Вопрос заключается в том, что изображение не занимает все пространство, я определяю поле NetworkImageViewVolley не изменил размер изображения правильно

Мой URL

https://i.ytimg.com/vi/2HA41DV_K7s/hqdefault.jpg 

XML

<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <com.android.volley.toolbox.NetworkImageView 
      android:id="@+id/banner_channel" 
      android:layout_width="120dp" 
      android:layout_height="90dp" 
      android:scaleType="centerCrop" 
      android:layout_marginLeft="15dp" 
      android:layout_marginTop="10dp" /> 
</LinearLayout> 

В моем адаптере

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     Context ctx = parent.getContext(); 
     if (convertView == null) { 
      convertView = LayoutInflater.from(ctx).inflate(LAYOUT, null); 
     } 
     NetworkImageView img = (NetworkImageView) convertView.findViewById(R.id.banner_channel); 


     img.setImageUrl(mVideoList.items.get(position).snippet.thumbnails.high.url, VolleySingleton.getInstance(
       ctx).getImageLoader()); 
     img.setDefaultImageResId(R.drawable.channel_thumb_default); 

     return convertView; 
    } 

Class кеш

/** 
* Created by Douglas on 24/08/2014. 
*/ 
public class VolleySingleton { 

    private static VolleySingleton mInstance = null; 
    // Fila de execução 
    private RequestQueue mRequestQueue; 
    // Image Loader 
    private ImageLoader mImageLoader; 

    private VolleySingleton(Context context) { 
     mRequestQueue = Volley.newRequestQueue(context); 
     mImageLoader = new ImageLoader(this.mRequestQueue, new ImageLoader.ImageCache() { 
      private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(10); 

      public void putBitmap(String url, Bitmap bitmap) { 
       mCache.put(url, bitmap); 
      } 

      public Bitmap getBitmap(String url) { 
       return mCache.get(url); 
      } 
     }); 
    } 

    public static VolleySingleton getInstance(
      Context context) { 

     if (mInstance == null) { 
      mInstance = new VolleySingleton(context); 
     } 
     return mInstance; 
    } 

    public RequestQueue getRequestQueue() { 
     return this.mRequestQueue; 
    } 

    public ImageLoader getImageLoader() { 
     return this.mImageLoader; 
    } 
} 

Изображение моего списка

http://i.imgur.com/gsEkt9R.png

+0

Что вы ожидаете увидеть, что это не происходит? Для меня это выглядит так же, как изменение размера изображений в 120х90. – jlmcdonald

ответ

1

Он работает должным образом. Эффект letterboxing (черные полосы сверху и снизу) является частью изображения, которое вы извлекали.

EDIT:

создать растровое изображение с оригинальным изображением, но без черных полос, используйте

Bitmap android.graphics.Bitmap.createBitmap(Bitmap source, int x, int y, int width, int height) 

где

источник - оригинальный растровый с черными полосами

х - Координата x первого пикселя в источнике

у - Координата первого пиксела в источнике

ширина - количество пикселей в каждой строке

высота - количество строк

+0

есть возможность удалить эту черную полосу? –

+1

Конечно, вы можете. Проанализируйте изображение и проверьте, соответствуют ли черные полосы на всех изображениях по размеру, затем выполните некоторые простые обрезки изображения в растровом изображении (см. Изменение в моем ответе) – josephus