在Recycler视图上添加图像视图时,Android导航抽屉动画滞后/减速
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Recycler视图上添加图像视图时,Android导航抽屉动画滞后/减速相关的知识,希望对你有一定的参考价值。
我在相对布局中有一个recyclerview,应用程序工作正常,导航抽屉很光滑。但是我在Recycler视图上添加了一个Imageview,以便我可以根据数据的可用性进行隐藏和显示。但是,当我添加Imageview时,导航抽屉变得非常慢。当我删除Imageview时,它再次顺利运行。图像大小仅为38kb。有人能告诉我如何以有效的方式显示空状态
这是我使用ImageView的布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.test.sample.itemHistory"
tools:showIn="@layout/app_bar_item_history"
android:background="#ffffff">
<android.support.v7.widget.RecyclerView
android:id="@+id/materialList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/imageViewNoItems"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/noItems" />
</RelativeLayout>
提前致谢
使用毕加索或滑动库进行图像加载..并在清单中添加一行,您的项目就像以前一样变得平滑。
<application
android:largeHeap="true">
</application>
largeHeap用于在加载图像时避免outofmemory异常。
在我的情况下,我尝试将图像(项目可绘制资源文件夹中的PNG文件)加载到我的RecycleView的ImageView以及使用Picasso,我面临同样的问题,导航抽屉滑动动画正在减慢。
我发现主要问题是因为我的图像文件非常大,所以毕加索将全尺寸图像加载到RecycleView的ImageView中会导致滞后。
我的解决方案是:(我使用的是KOTLIN语言)
- 使用Picasso内置的调整大小功能重新调整图像大小
没有调整大小(导致滞后):
Picasso.get().load(R.drawable.icon).into(holder.view.ImageView)
调整大小(解决延迟问题):
Picasso.get().load(R.drawable.icon).resize(400,400).centerCrop().into(holder.view.ImageView)
- 使用setImageDrawable而不是Picasso
此方法不需要调整图像大小:
holder.view.ImageView.setImageDrawable(holder.view.ImageView.context.resources.getDrawable(R.drawable.icon))
以上是关于在Recycler视图上添加图像视图时,Android导航抽屉动画滞后/减速的主要内容,如果未能解决你的问题,请参考以下文章
Android Recycler 视图使用异步任务从图库中加载图像
在水平和垂直的recyclerview中膨胀布局,具有recycler视图的FlexboxLayout添加视图水平自动垂直