android - 如何使用 glide 加载圆形 appcompat 操作栏 Logo

标签 android android-actionbar android-actionbar-compat android-glide

到目前为止,我已经完成了以下操作,如果我省略圆形图像创建部分,它可以正常工作,但我必须在操作栏中显示圆形图像

这是我到目前为止所尝试过的,任何帮助将不胜感激

Glide.with(mContext)
                    .load(doctorDetailsList.get(0).getDoc_imgurl().replace("200x200", Measuredwidth + "x" + Measuredwidth))
                    .placeholder(R.drawable.no_image)
                    .override(Measuredwidth, Measuredwidth)
                    .into(new Target<GlideDrawable>()
                    {
                        @Override
                        public void onLoadStarted(Drawable placeholder)
                        {

                        }

                        @Override
                        public void onLoadFailed(Exception e, Drawable errorDrawable)
                        {

                        }

                        @Override
                        public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation)
                        {
                            //  GlideDrawable dr = resource;
                            Bitmap bitmap = ((com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable) resource).getBitmap();
                            String filename = doctorDetailsList.get(0).getDoc_imgurl().trim().substring(doctorDetailsList.get(0).getDoc_imgurl().trim().lastIndexOf("/") + 1);
                            filename = filename.replaceAll(".jpg", "");
                            int resID = getResources().getIdentifier(filename, "data", getPackageName());
                            Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(), resID);

                            //Drawable d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 200, 200, true));

                            RoundedBitmapDrawable circularBitmapDrawable = RoundedBitmapDrawableFactory.create(mContext.getResources(), icon);
                            circularBitmapDrawable.setCircular(true);
                            // GlideDrawable gd = new GlideDrawable(resource,)

                            getSupportActionBar().setLogo(circularBitmapDrawable);
                        }

                        @Override
                        public void onLoadCleared(Drawable placeholder)
                        {

                        }

                        @Override
                        public void getSize(SizeReadyCallback cb)
                        {

                        }

                        @Override
                        public void setRequest(com.bumptech.glide.request.Request request)
                        {

                        }

                        @Override
                        public com.bumptech.glide.request.Request getRequest()
                        {
                            return null;
                        }

                        @Override
                        public void onStart()
                        {

                        }

                        @Override
                        public void onStop()
                        {

                        }

                        @Override
                        public void onDestroy()
                        {

                        }
                    });

最佳答案

找不到方法,改用Picasso并更改代码如下

  Picasso.with(mContext)
                    .load(doctorDetailsList.get(0).getDoc_imgurl())
                    .resize(120, 120)
                    .centerCrop()
                    .placeholder(R.drawable.no_image)
                    .into(new com.squareup.picasso.Target()
                    {
                        @Override
                        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from)
                        {
                            RoundedBitmapDrawable circularBitmapDrawable = RoundedBitmapDrawableFactory.create(mContext.getResources(), bitmap);
                            circularBitmapDrawable.setCircular(true);                             
                            getSupportActionBar().setLogo(circularBitmapDrawable);
                        }

                        @Override
                        public void onBitmapFailed(Drawable errorDrawable)
                        {

                        }

                        @Override
                        public void onPrepareLoad(Drawable placeHolderDrawable)
                        {

                        }
                    });

关于android - 如何使用 glide 加载圆形 appcompat 操作栏 Logo ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38845508/

相关文章:

android - 找不到类 'android.support.v4.app.FragmentManagerImpl'

java - Android解析5mb json文件导致内存不足异常

Android Appwidget textview不更新

android - 如何自定义 Android ActionBar 以在选项卡之前显示自定义 View ?

android - 使用 android.support.v4.app.FragmentActivity.getActionBar 时为 “No such method error”

android - 升级到 SDK 21 - 膨胀类 android.support.v7.internal.widget.ActionBarContainer 时出错

java - 只发送一个带有 http Post 的字符串但错误

android - 如何隐藏 fragment 的操作栏?

Android - 正确使用 invalidateOptionsMenu()

android - 从 ActionBar 的搜索 View 中删除图标