我在我的一项活动中实现了RecyclerView。 我使用定制的RecyclerView适配器从SQLite数据库(使用Room和LiveData结构)加载数据并在视图中显示。
所有行都有一个很大的ImageView,我想在其中显示一个Drawable(只是一个.png)。为此,我首先尝试使用在official Android Developers site上编写的方法,但这种方法对我而言效果不佳。 因此,我正在尝试将Glide用作Google推荐的库。
我的项目中有16个可绘制对象。它们的缩放比例都在800x800和1920x1080之间。
在我的适配器中,我也从数据库中加载数据,并基于可绘制的ID加载图像(因此,数据库中没有存储图像数据;我之前是这样做的)。
不幸的是,我的应用无法处理导致OutOfMemoryError exception的图像高速缓存。这就是为什么我使用
android:largeHeap = "true"
在我的Android清单中。
我知道这不是一个好的解决方案,我也知道必须有一种方法来为如此少量的图片使用更少的内存。
在Glide中,我使用
GlideApp
.load(R.drawable.my_drawable)
.fitcenter()
.into(myImageView);
但是不幸的是,图像没有缩小或缩小。我认为Glide可以根据ImageView的大小,屏幕大小等来缩放图像。
我在做什么错?是否有更好的方法来使用较少的内存而不进行固定缩放,以免我的图片变得丑陋?
编辑: 我首先将图像存储在项目结构中的基本“可绘制”文件夹中(复制和粘贴)。 我的第二种方法是gimp-android-xdpi addon,它可以导出任何Android密度(mdpi,hdpi,xhdpi等)的图像或图标。但这也没有帮助。
答案 0 :(得分:0)
呼叫覆盖(horizontalSize,verticalSize)。
这将调整图像的大小,然后在ImageView中显示它。