2015-08-18 36 views
9

Android Glide ile ilgili bir sorunum var. Resmimi hızlı bir şekilde değiştirmeye çalışıyorum, sadece tüm yer tutucu boyutu oluyorlar ve yer tutucu resmim çok düşük. Yani ne yapmam gerekiyor?Android Glide yer tutucu büyüklüğü

Belki yüklü olup olmadığını kontrol etmem gerekiyor, ama nasıl olduğunu bilmiyorum. Eğer doğru sorununuzu anlamak

Glide.with(this) 
    .load(quest.get(id).getImage()) 
    .placeholder(R.drawable.load) 
    .fitCenter() 
    .crossFade() 
    .into(imageView); 

cevap

0

, resimleri yüklemeniz gerekir, ancak genişliği ve tutucu resimden daha büyükse yüksekliğe sahip olmalıdır. Sorununuzu çözmek için öncelikle Glide belgelerini okuyun. ImageView tanımınızı xml dosyasında göremiyorum, ancak width ve height için wrap_content özelliğini kullandığınızı düşünüyorum. Eğer haklıysam darboğaz var. Görüntü yüklemeye başlamadan önce, Glide, ImageView genişliğini ve yüksekliğini tam olarak alır. Bundan sonra, görüntüyü ağdan yükler ve aynı zamanda ImageView özniteliklerinden birine (genişlik veya yükseklik) göre yeniden boyutlandırır. Bu yüzden yüklemeden sonra küçük görüntüler elde edersiniz. Sorununuzu çözmek için, sadece ImageView'ın genişliğini veya yüksekliğini, görmeyi beklediğiniz değere ayarlayın. Görüntünün diğer tarafı Glide mantığı tarafından otomatik olarak hesaplanacaktır.

12

Glide GitHub sayfasında this konuya göre size Glide isteğinize aşağıdaki satırı ekleyerek çözebilirsiniz: tam yük hattını yapacak

.dontAnimate() 

:

Glide.with(context) 
      .load("http://lorempixel.com/150/150") 
      .placeholder(R.drawable.no_image) 
      .override(100, 100) 
      .dontAnimate() 
      .into(imageView); 
+3

bağlantı da, .don'tAnimate bahseder gibi (statik bir resim kullanıyorsanız gerekli değildir)

() can Ayrıca .animate (android.R.anim.fade_in) – Chris

+0

ile değiştirilmelidir! İşe yaradı. – Chandru

1

Ne Bu bağlamda, görüntü boyutunu zorunlu kılmak için override() kullanıldı. İstenilen genişlik ve yükseklik kez

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    placeholderWidth = size.x/2 ; 
    placeholderHeight = size.x * 3/2 ; // based on the image's height to width ratio 

: Bir GRIDVIEW var ve her satırda iki resminin olması gerekiyorsa, bu görüntünün doğru genişlik ve yüksekliğini hesaplamak için piksel ekran boyutunu bulmak nasıl

fikri başlangıçta & yer tutucu gerektirdiği için ölçek türünü ayarlamaktır dinleyici takmak: Ben aşağıda belirtilen sever yapmak

Glide.with(context) 
      .load(url) 
      .placeholder(R.drawable.loading) 
      .override(placeholderWidth,placeholderHeight)     
      .into(viewHolder.imageViewHolder); 
1

: her görüntü elinde olan ben, bu geçersiz kılmayı kullanımı kolay ölçek tipi agai değiştirmek için görüntü indirildikten sonra indirilen görüntü tarafından gerektiği şekilde n.

//ivBuilderLogo = Target ImageView 
//Set the scale type to as required by your place holder 
//ScaleType.CENTER_INSIDE will maintain aspect ration and fit the placeholder inside the image view 
holder.ivBuilderLogo.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 

//AnimationDrawable is required when you are using transition drawables 
//You can directly send resource id to glide if your placeholder is static 
//However if you are using GIFs, it is better to create a transition drawable in xml 
//& use it as shown in this example 
AnimationDrawable animationDrawable; 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
    animationDrawable=(AnimationDrawable)context.getDrawable(R.drawable.anim_image_placeholder); 
else 
    animationDrawable=(AnimationDrawable)context.getResources().getDrawable(R.drawable.anim_image_placeholder); 
animationDrawable.start(); 

Glide.with(context).load(logo_url) 
        .placeholder(animationDrawable) 
        .listener(new RequestListener<String, GlideDrawable>() { 
         @Override 
         public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) 
         { 
          return false; 
         } 

         //This is invoked when your image is downloaded and is ready 
         //to be loaded to the image view 
         @Override 
         public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) 
         { 
         //This is used to remove the placeholder image from your ImageView 
         //and load the downloaded image with desired scale-type(FIT_XY in this case) 
         //Changing the scale type from 'CENTER_INSIDE' to 'FIT_XY' 
         //will stretch the placeholder for a (very) short duration, 
         //till the downloaded image is loaded 
         //setImageResource(0) removes the placeholder from the image-view 
         //before setting the scale type to FIT_XY and ensures that the UX 
         //is not spoiled, even for a (very) short duration 
          holder.ivBuilderLogo.setImageResource(0); 
          holder.ivBuilderLogo.setScaleType(ImageView.ScaleType.FIT_XY); 
          return false; 
         } 
        }) 
        .into(holder.ivBuilderLogo); 

My geçiş çekilebilir (R.drawable.anim_image_placeholder):

<?xml version="1.0" encoding="utf-8"?> 
<animation-list 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:oneshot="false"> 
    <item android:drawable="@drawable/loading_frame1" android:duration="100" /> 
    <!--<item android:drawable="@drawable/loading_frame2" android:duration="100" />--> 
    <item android:drawable="@drawable/loading_frame3" android:duration="100" /> 
    <!--<item android:drawable="@drawable/loading_frame4" android:duration="100" />--> 
    <item android:drawable="@drawable/loading_frame5" android:duration="100" /> 
    <!--<item android:drawable="@drawable/loading_frame6" android:duration="100" />--> 
    <item android:drawable="@drawable/loading_frame7" android:duration="100" /> 
    <!--<item android:drawable="@drawable/loading_frame8" android:duration="100" />--> 
    <item android:drawable="@drawable/loading_frame9" android:duration="100" /> 
    <!--<item android:drawable="@drawable/loading_frame10" android:duration="100" />--> 
</animation-list> 
İlgili konular