莫道桑榆晚,为霞尚满天。这篇文章主要讲述在Recycler视图上添加图像视图时,Android导航抽屉动画滞后/减速相关的知识,希望能为你提供帮助。
【在Recycler视图上添加图像视图时,Android导航抽屉动画滞后/减速】我在相对布局中有一个recyclerview,应用程序工作正常,导航抽屉很光滑。但是我在Recycler视图上添加了一个Imageview,以便我可以根据数据的可用性进行隐藏和显示。但是,当我添加Imageview时,导航抽屉变得非常慢。当我删除I??mageview时,它再次顺利运行。图像大小仅为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="https://www.songbingjia.com/android/@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))
推荐阅读
- 使用addButton时,AppJar已按下所有按钮
- Matlab - AppDesigner(使用GUI中断循环)
- 使用循环或lapply来读取和命名文件
- 如何从Delphi Android应用程序启动视频通话()
- R(试图理解逻辑以用lapply()替换循环)
- JSON Web Token教程(Laravel和AngularJS中的示例)
- 使用AngularJS和Play框架构建现代Web应用程序
- 使用Spring框架构建MVC应用程序(初学者教程)
- Gulp的JavaScript自动化简介