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