ImagePages夸大了ViewPager的性能不佳

时间:2019-01-02 10:47:33

标签: android performance mobile android-viewpager imageview

我正在开发一个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中,以便我可以适当地使用它们。

0 个答案:

没有答案