其他分享
首页 > 其他分享> > android-将Picasso与RoundedBitmapDrawable一起使用

android-将Picasso与RoundedBitmapDrawable一起使用

作者:互联网

我看过有关材料设计的Udacity讲座,并提到使用RoundedBitmapDrawable来实现圆形视图.但是我有一些麻烦使其与毕加索一起使用.

我不确定Picasso的工作原理如何,但是文件存储中有很大的非正方形图像.因此,我按以下方式使用毕加索:

Picasso.with(context).load(f).resize(densityDpi, densityDpi).centerInside().transform(new Transformation() {
    @Override
    public Bitmap transform(Bitmap source) {
        Log.d("jano", "transformation running");
        RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(context.getResources(), source);
        drawable.setCircular(true);
        drawable.setCornerRadius(source.getWidth() / 2.0f);
        return drawable.getBitmap();
    }

    @Override
    public String key() {
        return "circle";
    }
}).into(imageView);

但是,图像是正方形的,没有圆角(应该是圆形的).这就是我想要实现的目标.

是否有任何简单的方法可以使用RoundedBitmapDrawable实现此目的,还是必须完全实现转换? (我在StackOverflow上看到了)

请不要在没有说明的情况下提交答案,为什么不能使用它.我只想知道这两个项目的组合(毕加索,RoundedBitmapDrawable)

解决方法:

我做了很多尝试来做同样的事情,但也没有用…我想这是在getBitmap期间出现的问题,无论如何,我解决了这个问题:
(请注意,主要区别在于我使用setImage作为可绘制对象,而不是像我所说的那样转换为Bitmap)

    Picasso.with(getContext())
    .load(mUser.user.profileImageUrl)
    .into(mProfileImage, new Callback() {
        @Override
        public void onSuccess() {
            Bitmap source = ((BitmapDrawable) mProfileImage.getDrawable()).getBitmap();
            RoundedBitmapDrawable drawable =
                    RoundedBitmapDrawableFactory.create(getContext().getResources(), source);
            drawable.setCircular(true);
            drawable.setCornerRadius(Math.max(source.getWidth() / 2.0f, source.getHeight() / 2.0f));
            mProfileImage.setImageDrawable(drawable);
        }

        @Override
        public void one rror() {

        }
    });

标签:picasso,android,roundedbitmapdrawable
来源: https://codeday.me/bug/20191119/2036851.html