【发布时间】:2016-10-14 09:50:03
【问题描述】:
我正在尝试使用 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)
还尝试了下面的堆栈溢出答案:
Memory leak with images in viewpager
静止图像在视图寻呼机中从前一个图像到下一个图像需要很长时间。 我在不同的设备上对其进行了测试。在 moto x 上播放速度最慢,而三星、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);
}
提前致谢!
【问题讨论】:
-
尝试将 setImageDrawable 更改为 setImageResource。它对我有用。
-
也试过了,还是一样的输出!
-
1) 首先检查图像的大小和分辨率。 2) 在清单文件中设置 largeHeap="true"。 3) 使用 Glide 加载图片。
-
图片大小分别为 34kb、30kb、50kb、40kb。我很在意。感谢您的快速响应!
-
发布您的完整活动代码
标签: android image bitmap android-viewpager