我正在开发一个Android应用,该应用的ViewPager带有ImageViews。我有图片网址的数组,但是在不同情况下数组的大小不同,因此应动态加载。我正在使用Picasso库的Target将图像加载到Bitmap ArrayList中,然后更新ViewPagerAdapter
pagerAdapter.updateImages(images); // passing ArrayaList<Image> to the adapter
pagerAdapter.notifyDataSetChanged();
int currentItem = pager.getCurrentItem();
pager.setAdapter(pagerAdapter);
pager.setCurrentItem(currentItem);
pager.setOffscreenPageLimit(images.size()-1);
问题与应用程序的性能有关-一些图像未正确加载到ImageView中,而且当我开始在图像中滑动时,某些项目的性能非常差(其中一些分辨率为6000x6000) PagerView的XML
<android.support.v4.view.ViewPager
android:id="@+id/productPager"
android:layout_width="match_parent"
android:layout_height="400dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/productImage"
android:scaleType="fitXY"/>
</android.support.v4.view.ViewPager>
这是我实例化和销毁对象的方式:
public Object instantiateItem(@NonNull ViewGroup container, int position) {
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.image_product, null);
ImageView imageView = view.findViewById(R.id.productImageView);
if(images.size()!=0) {
imageView.setImageBitmap(images.get(position));
}
container.addView(view, 0);
return view;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
((ViewPager)container).removeView((View)object);
}
无论我将scaleType更改为什么,某些图像都无法放入ImageView中。 在此之前,我有一个类似的问题,但是我必须加载的图像是单个图像,因此我可以使用picasso fit()方法将其放入ImageView中。之后,图像的性能和外观就非常完美。 给我一些建议,如何将图像加载到ViewPager中,以便我可以适当地使用它们。