#android #android-glide #bottomnavigationview
#Android #android-glide #bottomnavigationview
Вопрос:
Я хочу отправить изображение моего профиля в нижнем навигационном представлении с помощью glide следующим образом:
Glide.with(this)
.asBitmap()
.load(user.getProfileImageUrl())
.apply(RequestOptions.circleCropTransform())
.into(new CustomTarget<Bitmap>() {
@SuppressLint("NewApi")
@Override
public void onResourceReady(@NonNull Bitmap resource,
@Nullable Transition<? super Bitmap> transition) {
Drawable drawable = new BitmapDrawable(getResources(), resource);
navigationView.getMenu().findItem(R.id.item_profile).setIcon(drawable);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
Вот так, но изображение не установлено.
Ответ №1:
Вы можете настроить нижнюю навигацию и использовать Glide для загрузки изображения.
найдите ImageView из navigationItemView:
val navigationItemView = findViewById<BottomNavigationItemView>(itemId)
val imageView = navigationItemView.children.find {
it is ImageView
} as? ImageView ?: return
loadProfileImage(imageView, imageUrl, placeHolderResourceId, itemId)
загрузить изображение :
private fun loadProfileImage(
imageView: ImageView,
imageUrl: String,
@DrawableRes placeHolderResourceId: Int,
@IdRes itemId: Int
) {
Glide.with(this)
.load(imageUrl)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.optionalCircleCrop()
.placeholder(placeHolderResourceId)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
target: Target<Drawable>?,
isFirstResource: Boolean
): Boolean {
return false
}
override fun onResourceReady(
resource: Drawable?,
model: Any?,
target: Target<Drawable>?,
dataSource: DataSource?,
isFirstResource: Boolean
): Boolean {
isImageLoaded = true
if (selectedItemId == itemId) {
imageView.clearColorFilter()
handleImageItemSelected(imageView)
}
return false
}
})
.into(imageView)
}
пожалуйста, ознакомьтесь с этим репозиторием…Я реализовал этот сценарий!
https://github.com/farshadrezaee/load-image-in-bottom-navigation