У меня есть один путь загрузки.из того же источника мне нужно поместить загруженное изображение в два вида изображения.один для обычного просмотра изображения, а другой для размытого изображения.эти два вида изображений перекрывают друг друга.
эти виды изображений расположены в виде элемента в представлении утилизатора.
Я использую приведенный ниже код для загрузки изображения, я использую BlurTransformation из библиотеки wasabeef вВторой код Пикассо ниже:
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val currentEvent = getItem(position)
val recommendedEventViewHolder = holder as RecommendedEventViewHolder
Picasso.get()
.load(currentEvent.posterDownloadPath)
.into(recommendedEventViewHolder.posterImageView)
Picasso.get()
.load(currentEvent.posterDownloadPath)
.transform(BlurTransformation(mContext,25,3))
.into(recommendedEventViewHolder.blurryImageView)
}
этот код может работать, но я волнуюсь.потому что, кажется, медленно загружать эти 2 изображения.Я предполагаю, что он загрузит 2 изображения, хотя источник только один.так что, возможно, это не эффективный способ.
Я пробовал каким-то образом.как при использовании целевого интерфейса, как показано ниже
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val currentEvent = getItem(position)
val recommendedEventViewHolder = holder as RecommendedEventViewHolder
Picasso.get()
.load(currentEvent.posterDownloadPath)
.into(object: Target {
override fun onPrepareLoad(placeHolderDrawable: Drawable?) {
}
override fun onBitmapFailed(e: Exception?, errorDrawable: Drawable?) {
}
override fun onBitmapLoaded(bitmap: Bitmap?, from: Picasso.LoadedFrom?) {
recommendedEventViewHolder.posterImageView.setImageBitmap(bitmap)
recommendedEventViewHolder.blurryImageView.setImageBitmap(bitmap)
}
})
}
, но если я использую этот код, иногда растровое изображение из onBitmapLoaded
равно нулю, поэтому изображение иногда не отображается.
Я пробовалТретий способ использования слушателя onSuccess, подобный приведенному ниже:
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val currentEvent = getItem(position)
val recommendedEventViewHolder = holder as RecommendedEventViewHolder
Picasso.get()
.load(currentEvent.posterDownloadPath)
.into(recommendedEventViewHolder.posterImageView, object : com.squareup.picasso.Callback {
override fun onSuccess() {
val downloadedBitmap =
(recommendedEventViewHolder.posterImageView.drawable as BitmapDrawable).bitmap
recommendedEventViewHolder.posterImageView.setImageBitmap(downloadedBitmap)
recommendedEventViewHolder.blurryImageView.setImageBitmap(downloadedBitmap)
}
override fun onError(e: Exception?) {
}
})
}
, но проблема в том, что изображение кажется непоследовательным, я имею в виду, что в течение нескольких секунд изображение, которое должно появиться в пункте 1, появится в пункте 5или пункт 7, если я прокручиваю вниз представление рециркулятора, даже если оно в конечном итоге расположено в правильном порядке, если я прокручиваю до нижней части окна рециркуляции
, как эффективно загрузить изображение из одного пути, который будет использоваться в 2представления изображения в том же фрагменте в представлении переработчика, используя Пикассо?
Ява в порядке.