2015-08-27 2 views
1

Хорошо, я переопределил методы Пикассоса, моя логика такова. В адаптере у меня есть макет, где будет загружен мой образ, но перед этим у меня есть FrameLayout на весь экран, чтобы сохранить анимацию. Мой код следующий:Picasso не может загрузить анимацию на @override

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

     final holder mHolder; 


     if (convertView == null) { 
      mHolder = new holder(); 


      convertView = mInflater.inflate(R.layout.adapter_prodavci, parent, false); 
      mHolder.slika = (ImageView) convertView.findViewById(R.id.ImageViewProdavciMain); 
      mHolder.loading = (ImageView) convertView.findViewById(R.id.loadingImageAdapterProdavci); 
      mHolder.frame = (FrameLayout) convertView.findViewById(R.id.frameAdapterProdavci); 
      convertView.setTag(mHolder); 
     } else { 
      mHolder = (holder) convertView.getTag(); 
     } 
     final Animation myAnim = AnimationUtils.loadAnimation(mContext.getApplicationContext(), R.anim.rotator); 
     Prodavci prodavci = getItem(position); 
     Picasso.with(mContext) 
       .load(prodavci.getSlika()) 
       .into(new Target() { 
        @Override 
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
//      myAnim.cancel(); 
//      myAnim.reset(); 
         mHolder.loading.clearAnimation(); 
         mHolder.loading.setVisibility(View.GONE); 
         mHolder.loading.invalidate(); 
         mHolder.frame.setVisibility(View.GONE); 
         mHolder.frame.invalidate(); 
         mHolder.slika.setVisibility(View.VISIBLE); 
         mHolder.slika.setImageBitmap(bitmap); 
         mHolder.slika.bringToFront(); 
         mHolder.slika.invalidate(); 
        } 

        @Override 
        public void onBitmapFailed(Drawable errorDrawable) { 

        } 

        @Override 
        public void onPrepareLoad(Drawable placeHolderDrawable) { 
         mHolder.loading.startAnimation(myAnim); 
        } 
       }); 

     return convertView; 
    } 

и мой XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_margin="11.333dp" 
     android:layout_marginLeft="11.33dp" 
     android:layout_marginRight="11.33dp" 
     android:layout_marginTop="11.33dp" 
     android:background="@drawable/okvirlogo"> 


     <aik.akcijeikatalozi.objetki.SquareImageView 
      android:id="@+id/ImageViewProdavciMain" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:layout_margin="3dp" 
      android:background="@android:color/transparent" 
      android:scaleType="center" /> 


    </LinearLayout> 


    <FrameLayout 
     android:id="@+id/frameAdapterProdavci" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:background="#ffffff"> 


     <ImageView 
      android:id="@+id/loadingImageAdapterProdavci" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_gravity="center_horizontal|center_vertical" 
      android:background="@android:color/transparent" 
      android:src="@drawable/loadingwheels" /> 


    </FrameLayout> 

</RelativeLayout> 

Проблема заключается в том, что анимация не спрятана за метод onBitmapLoaded, он скрыт, когда я прокручиваю вниз GridView, и вытащить его обратно, а затем его уйти. Какие-либо предложения?

ответ

1

Неправильная логика. Вот код:

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

     final holder mHolder; 


     if (convertView == null) { 
      mHolder = new holder(); 


      convertView = mInflater.inflate(R.layout.adapter_prodavci, parent, false); 
      mHolder.slika = (ImageView) convertView.findViewById(R.id.ImageViewProdavciMain); 
      convertView.setTag(mHolder); 
     } else { 
      mHolder = (holder) convertView.getTag(); 
     } 

     Prodavci prodavci = getItem(position); 



     Picasso.with(mContext) 
       .load(prodavci.getSlika()) 
       .into(new Target() { 
        @Override 
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
         mHolder.slika.clearAnimation(); 
         mHolder.slika.setImageBitmap(bitmap); 
        } 

        @Override 
        public void onBitmapFailed(Drawable errorDrawable) { 

        } 

        @Override 
        public void onPrepareLoad(Drawable placeHolderDrawable) { 
         Animation myAnim = AnimationUtils.loadAnimation(mContext.getApplicationContext(), R.anim.rotator); 
         placeHolderDrawable = mContext.getResources().getDrawable(R.drawable.loadingwheels); 
         mHolder.slika.setImageDrawable(placeHolderDrawable); 
         mHolder.slika.startAnimation(myAnim); 
        } 
       }); 

     return convertView; 
    } 

XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_margin="11.333dp" 
     android:layout_marginLeft="11.33dp" 
     android:layout_marginRight="11.33dp" 
     android:layout_marginTop="11.33dp" 
     android:background="@drawable/okvirlogo"> 


     <aik.akcijeikatalozi.objetki.SquareImageView 
      android:id="@+id/ImageViewProdavciMain" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:layout_margin="11.333dp" 
      android:layout_marginLeft="11.33dp" 
      android:layout_marginRight="11.33dp" 
      android:layout_marginTop="11.33dp" 
      android:background="@android:color/transparent" /> 


    </LinearLayout> 


</RelativeLayout> 
Смежные вопросы