android - 使用 View 寻呼机滑动 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.

我尝试了以下方法:

1 setImageResource() 在 UI 线程上执行位图读取和解码,这可能会导致延迟问题。如果这是一个问题,请考虑改用 2.setImageDrawable(android.graphics.drawable.Drawable) 或 3.setImageBitmap(android.graphics.Bitmap) 和 BitmapFactory。 图片的大小和分辨率也可能导致滚动缓慢, 尝试创建大图像的缩略图并使用。(我将可绘制的图像大小从 100kb 减少到 30-50kb)

还尝试了下面的堆栈溢出答案:

Memory leak with images in viewpager

在 view pager 中,静止图像从上一张到下一张图像需要很长时间。 我在不同的设备上测试了它。在 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);
    }

提前致谢!

最佳答案

尝试将您的图像放在特定的 Drawable 文件夹中以不同的密度查看!所以你没有任何渲染问题

默认情况下,Android 会缩放您的位图可绘制对象(.png、.jpg 和 .gif 文件),以便它们在每台设备上以适当的物理尺寸呈现。例如,如果您的应用程序仅为基线、中等屏幕密度 (mdpi) 提供位图可绘制对象,则系统会在高密度屏幕上放大它们,并在低密度屏幕上缩小它们。这种缩放会导致位图中出现伪影、缩小或放大。为确保您的位图呈现出最佳效果,您应该为不同的屏幕密度包含不同分辨率的替代版本。

关于android - 使用 View 寻呼机滑动 4 个图像非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40040141/

相关文章:

python - 更改背景 Canvas kivy

html - 如何在保持正确纵横比的同时保存缩略图?

Android:将ImageView中的图像旋转90度但没有延迟

javascript - 使用 JavaScript 创建 IMG 标签,不工作

C++ 如何在容器中加载 16 位 TIFF 文件以对其数据执行数学运算?

android - 单击后退按钮后如何关闭警报框

android - 如何清除 LiveData 存储值?

android - 使用 Kotlin 1.6.0 的 proguard/R8 删除了数据类元数据

Android环境变量和父子 Activity

加载程序后的 Javascript 图像