好的,我已经覆盖了Picassos方法,我的逻辑如下。在适配器中,我有一个布局,我的图像将被下载,但在此之前,我在整个屏幕上有一个FrameLayout来存储我的动画drawable。我的代码是下一个:
@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时它被隐藏,然后将其拉回来,然后它就消失了。有什么建议吗?
答案 0 :(得分: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>