У меня есть некоторые проблемы относительно моего ImageView внутри моего RecyclerView
. Я создаю средство просмотра комиксов, и я загружаю очень длинные изображения. Я нарезал свои изображения на 8 частей, поэтому мой ImageView
может справиться с ними. Проблема заключается в загрузке изображения на RecyclerView
.Как сделать ImageView на RecyclerView для установки размера, пока Glide загружает изображение?
Я использую Glide
, и когда Glide
загружает сегментированные детали, есть довольно заметная задержка. Что предпочтительнее из-за кэширования изображений, и оно работает очень хорошо, но это оставило нежелательный эффект. Я не могу показать реальное изображение, так как это происходит очень быстро, но я могу представить его с помощью ASCII
:
Например вот моя RecyclerView
при запуске:
---------------Segment1
#.........................
#.........................
#.........................
#.........................
#.........................
#.........................
---------------Segment2
---------------Segment3
---------------Segment4
#.........................
#.........................
#.........................
#.........................
#.........................
#.........................
Как вы можете заметить здесь, Glide является еще не закончил загрузку Сегмент2 и Сегмент3 и по сути, показывает сегмент1 и сегмент4, сшитые вместе. Весь неожиданный Segment2 и Segment3 выскочили из существования, что не очень приятно.
Даже если бы я разместил его на ScrollView
и динамически добавил в него ImageView
, это будет тем же эффектом. Я не могу назначить постоянные px/dip по ширине и высоте на ImageView
по очевидным причинам, так как мне нужно обрабатывать несколько размеров экрана.
Моя 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
, чтобы узнать его текущую размерную базу на размер загружаемого изображения, чтобы он заполнил промежуток между загруженными сегментами и не выскочил из существования.
Любые мысли?
Иисус христос это работало. Но мои масштабированные изображения немного вытянуты, но тем не менее это сработало. –