中设置用户个人资料图像

中设置用户个人资料图像

本文介绍了如何从服务器 url 在bottomnavigationview 中设置用户个人资料图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在底部导航视图中发送我的个人资料图片,像这样滑动:

I want to sent the my profile image in bottom navigation view with glide like this:

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) {

            }
        });

喜欢这个,但是图片没有设置.

Like this but the image is not set.

推荐答案

您可以自定义底部导航并使用 Glide 加载图像.

You can customize Bottom Navigation and use Glide for load image.

从 navigationItemView 中找到 ImageView:

find ImageView from 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)

}

请看这个 repo...我已经实现了这个场景!

please see this repo...I have implemented this scenario!

https://github.com/farshadrezaee/load-image-in-底部导航

这篇关于如何从服务器 url 在bottomnavigationview 中设置用户个人资料图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-27 13:18
查看更多