我正在尝试使用viewpager创建包含4张图片的应用程序介绍,并且在从之前的图像滑动到下一个图像时需要很长时间。
当我滑动时,在logcat中得到以下日志:
I/Choreographer: Skipped 100 frames! The application may be doing too much work on its main thread.
I/Choreographer: Skipped 94 frames! The application may be doing too much work on its main thread.
我尝试了以下方法:
1. setImageResource() 在UI线程上进行位图读取和解码,这可能会导致延迟。如果这是一个问题,请考虑使用2.setImageDrawable(android.graphics.drawable.Drawable)或3.setImageBitmap(android.graphics.Bitmap)和BitmapFactory。图片的大小和分辨率也可能是滚动缓慢的原因,尝试创建大图片的缩略图并使用它们。(我将图片从100kb减小到30-50kb)
我还尝试了下面的stackoverflow答案: Viewpager中的图片内存泄漏 在view pager中,仍然需要花费很长时间从前一张图片切换到下一张图片。我在不同设备上测试过。在moto x play上最慢,而其他设备像三星、moto E、联想都稍微快一些,但仍然不够理想。
我在drawable文件夹中有4张图片,并使用以下代码来滑动这些图片。
@Override
public int getCount() {
return mResources.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == (object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View itemView = LayoutInflater.from(mContext).inflate(R.layout.pager_item, container, false);
ImageView imageView = (ImageView) itemView.findViewById(R.id.img_pager_item);
imageView.setImageDrawable(mResources[position]);
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout) object);
}
Thanks in advance !