我在我的RecyclerView
裏面有一些關於ImageView的問題。我正在創建漫畫查看器,並加載非常長的圖像。我把我的圖片切成8部分,所以我的ImageView
可以處理它們。問題是在RecyclerView
上加載圖像時。如何在Glide加載圖像時使RecyclerView上的ImageView具有尺寸設置?
我使用的是Glide
,當Glide
正在加載分段部件時,會有相當明顯的延遲。由於圖像緩存,這是可取的,並且它工作得很好,但是它留下了不希望的效果。我不能表現出實際的圖像,因爲它正在發生非常快,但我可以用ASCII
代表它:
例如,這裏是我RecyclerView
在啓動時:
---------------Segment1
#.........................
#.........................
#.........................
#.........................
#.........................
#.........................
---------------Segment2
---------------Segment3
---------------Segment4
#.........................
#.........................
#.........................
#.........................
#.........................
#.........................
正如你可以在這裏看到,滑翔是尚未完成加載Segment2和Segment3並生效,將Segment1和Segment4拼接在一起。所有突然出現的Segment2和Segment3都不存在,這不太好。
即使我把它放在ScrollView
上,並動態地將ImageView
添加進去,效果也是一樣的。我無法在ImageView
上分配寬度和高度上的常量px/dip,原因很明顯,因爲我需要處理多個屏幕大小。
我ImageView
設置是這樣的:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageview_comic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:adjustViewBounds="true"/>
</LinearLayout>
下面是我在做什麼,當我綁定到這個ImageView
:
private void bindSegment(ComicViewHolder holder, int position)
{
File file = mSegments.get(position);
Point imageSize = Constants.getImageSize(file);
Point screenSize = Constants.getScreenSize(mContext);
ImageView imageView = holder.mImageViewComic;
Glide.with(imageView.getContext())
.load(file.getAbsolutePath())
.override(imageSize.x , imageSize.y)
.crossFade(0)
.into(imageView);
}
如果我分配基於ImageView
恆定像素寬度/高度通過getLayoutParams()
,我可以讓它在一部手機上工作,而不是另一部手機上。我不能這樣硬編碼ImageView
大小。 Glide.override
似乎沒有按照我的預期工作。我需要我的ImageView
根據所加載圖像的大小了解其當前尺寸,以便填充已加載段之間的間隙,而不是彈出存在。
有什麼想法?
耶穌基督這個工作。但我縮放的圖像有點拉長,但從來沒有它的工作。 –