2014-02-25 5 views
0

Я использую Universal ImageLoader для загрузки больших изображений с сервера и отображения их в потоке. Проблема, с которой я столкнулась, заключается в том, что я не могу установить собственный размер для своего изображения. Это просто весь экран. Например, я загружаю изображение размером 500 x 1200 - и я хочу отображать его размером 300 x 300. Но он отображает весь экран. Пожалуйста, помогите мне в этом вопросе, поскольку я застрял более 3 дней. Благодарю.Display Custom Size Image Universal ImageLoader

Код

public class HomeCoverFlow { 

    Context mContext; 
    public CoverFlow coverFlow; 
    ImageAdapter coverImageAdapter; 
    ImageLoader imageLoader = ImageLoader.getInstance(); 
    DisplayImageOptions options; 

    /** Called when the activity is first created. */ 

    public HomeCoverFlow(Context context) 
    { 
     mContext = context; 
      options = new DisplayImageOptions.Builder() 
      .showImageOnLoading(R.drawable.flyer_placeholder) 
      .showImageForEmptyUri(R.drawable.flyer_placeholder) 
      .imageScaleType(ImageScaleType.EXACTLY) 
      .cacheInMemory(true) 
      .build(); 

     coverFlow = new CoverFlow(context); 

     coverImageAdapter = new ImageAdapter(mContext); 

     coverFlow.setAdapter(coverImageAdapter); 

     coverFlow.setSpacing(-25); 
     coverFlow.setSelection(2, true); 
     coverFlow.setAnimationDuration(1000); 

     coverFlow.setGravity(Gravity.CENTER_VERTICAL); 


      // HEIGHT 
      coverImageAdapter.coverflowHeight = 100; //display.getHeight()/3; 

      //WIDTH 
      coverImageAdapter.coverflowWidth = 100;// display.getWidth()/2; 


     } 

Способ адаптера для создания представлений элементов, Здесь я использую imageloader для загрузки изображения и отображения

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

     FeaturedFlyerData data = (FeaturedFlyerData) getItem(position); 

      if(data.flyerImage == null) 
      { 
       setNewImage(position); 
      } 
      //see text or image 
      if(data.displayImage) 
      { 
       data.flyerImage.setBackgroundColor(Color.BLACK); 

       imageLoader.displayImage(data.url, data.flyerImage, options, null); 

      } 


     return data.flyerImage; 

}  

void setNewImage(int position) 
    { 
     FeaturedFlyerData data = (FeaturedFlyerData) getItem(position); 

     data.flyerImage = new ImageView(mContext); 
     data.flyerImage.layout(0, 10, 200,350); 
     data.flyerImage.setScaleType(ScaleType.CENTER_INSIDE); 
     data.flyerImage.setTag(Integer.toString(position)); 
     data.flyerImage.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      imageClicked(Integer.parseInt(v.getTag().toString())); 

     } 
    }); 
    } 

} 

Я не знаю, что еще фрагмент кода, чтобы обеспечить Вот. Прошу прокомментировать, если вам нужны дополнительные разъяснения. Благодарю.

+0

data.flyerImage является ImageView правильно? Вы пытались установить layout_height и layout_width этого ImageView? –

+0

@GlaucoNeves да, это изображение. Я уже установил метод setNewImage. См. Мое редактирование. Правильно ли я делаю это? – NightFury

+0

Попробуйте data.flyerImage.getLayoutParams(). Height = 100; data.flyerImage.getLayoutParams(). width = 100; –

ответ

1

Я использую следующий код для отображения изображений нестандартного размера в режиме покрытия с использованием универсального загрузчика изображений.

В конструктора, установить DisplayImageOptions как:

DisplayImageOptions options = new DisplayImageOptions.Builder() 
     .showImageOnLoading(R.drawable.flyer_placeholder) 
     .showImageForEmptyUri(R.drawable.flyer_placeholder) 
     .imageScaleType(ImageScaleType.EXACTLY) 
     .cacheInMemory(true) 
     .build(); 

//set coverflow full screen, and images size. 

     coverFlow.setSpacing(-25); 
     coverFlow.setAnimationDuration(1000); 
     coverFlow.setGravity(Gravity.CENTER_VERTICAL); 
     coverFlow.setLayoutParams(new CoverFlow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 

     // GET SCREEN SIZE 
      WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); 
      Display display = wm.getDefaultDisplay(); 

      DisplayMetrics dm = new DisplayMetrics(); 
      display.getMetrics(dm); 

//Here I am setting image size using my custom adapter in "dp". Avoid to use pixels as things will mess up for different screen sizes 

      coverImageAdapter.coverflowWidth = (int) Math.ceil(dm.widthPixels * (dm.densityDpi/160.0)); 
      coverImageAdapter.coverflowHeight = (int) Math.ceil(dm.heightPixels * (dm.densityDpi/160.0))/2; 

В setNewImage методе адаптера (называемый в getView), использовать Gallery.LayoutParams:

void setNewImage(int position) 
{ 
    FeaturedFlyerData data = (FeaturedFlyerData) getItem(position); 

    data.flyerImage = new ImageView(mContext);  
    data.flyerImage.setLayoutParams(new Gallery.LayoutParams(coverflowWidth, coverflowHeight)); 
    data.flyerImage.setScaleType(ScaleType.CENTER_INSIDE); 
}