2014-02-25 5 views
0

Universal ImageLoader를 사용하여 서버에서 큰 이미지를 다운로드하고 coverflow로 표시합니다. 내가 직면 한 이슈는 내 이미지에 맞춤 크기를 설정할 수 없다는 것입니다. 단지 전체 화면을 필요로합니다. 예를 들어 크기가 500 x 1200 인 이미지를 다운로드하고 300 x 300 크기로 표시하려고합니다. 그러나 전체 화면을 표시합니다. 제가 3 일 이상 붙어있어서이 문제로 저를 도우십시오. 감사.사용자 정의 크기 이미지 표시 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; 


     } 

코드, 저는 여기에

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())); 

     } 
    }); 
    } 

} 

내가 제공하는 어떤 다른 코드 모르는 이미지와 디스플레이를 다운로드하여 ImageLoader를 사용 이리. 더 자세한 설명이 필요하면 의견을 말하십시오. 감사.

+0

data.flyerImage는 이미지 뷰의 권리 생성자에서

는 같은 DisplayImageOptions을 설정? 그 ImageView의 layout_height 및 layout_width를 설정하려고 했습니까? –

+0

@GlaucoNeves 네, 그것은 이미지 뷰입니다. 나는 이미 "setNewImage"메소드를 설정했다. 내 편집을 참조하십시오. 내가 제대로하고 있니? – NightFury

+0

try try data.flyerImage.getLayoutParams(). height = 100; data.flyerImage.getLayoutParams(). width = 100; –

답변

1

다음 코드를 사용하여 universal imageloader를 사용하여 coverflow에서 사용자 정의 크기 이미지를 표시합니다. (getView에서 호출) 어댑터의 setNewImage 방법에서

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; 

사용 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); 
} 
관련 문제