asc*_*ker 4 android image bitmap android-viewpager
我正在尝试使用 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.
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
1 setImageResource() 在 UI 线程上执行 Bitmap 读取和解码,这可能会导致延迟打嗝。如果这是一个问题,请考虑使用 2.setImageDrawable(android.graphics.drawable.Drawable) 或 3.setImageBitmap(android.graphics.Bitmap) 和 BitmapFactory。图像的大小和分辨率也可能是导致滚动缓慢的原因,请尝试创建大图像的缩略图并使用。(我将可绘制的图像大小从 100kb 减少到 30-50kb)
还尝试了下面的堆栈溢出答案:
静止图像在视图寻呼机中从上一个图像到下一个图像花费很多时间。我在不同的设备上测试过。在 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);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢 !
尝试将您的图像放在特定的 Drawable 文件夹中以不同的密度查看!所以你没有任何渲染问题
默认情况下,Android 会缩放您的位图可绘制对象(.png、.jpg 和 .gif 文件),以便它们在每个设备上以适当的物理尺寸呈现。例如,如果您的应用程序仅为基线、中等屏幕密度 (mdpi) 提供位图可绘制对象,则系统在高密度屏幕上放大它们,在低密度屏幕上缩小它们。这种缩放会导致位图中出现伪影、缩小或放大。为了确保您的位图看起来最好,您应该为不同的屏幕密度包含不同分辨率的替代版本。