3 回答
TA贡献1865条经验 获得超7个赞
您也可以使用此功能...对我有用。
public Bitmap getRoundedShape(Bitmap scaleBitmapImage) {
int targetWidth = 50;
int targetHeight = 50;
Bitmap targetBitmap = Bitmap.createBitmap(targetWidth,
targetHeight,Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(targetBitmap);
Path path = new Path();
path.addCircle(((float) targetWidth - 1) / 2,
((float) targetHeight - 1) / 2,
(Math.min(((float) targetWidth),
((float) targetHeight)) / 2),
Path.Direction.CCW);
canvas.clipPath(path);
Bitmap sourceBitmap = scaleBitmapImage;
canvas.drawBitmap(sourceBitmap,
new Rect(0, 0, sourceBitmap.getWidth(),
sourceBitmap.getHeight()),
new Rect(0, 0, targetWidth, targetHeight), null);
return targetBitmap;
}
TA贡献1821条经验 获得超4个赞
这可能不会回答您的问题,但是,作为替代方案,您可以通过在FrameLayout
例如一个2 ImageViews中模仿这种效果:一个在底部-这将是图片,一个在顶部-这将是灰色中间有一个圆形的正方形,而圆形的“主体”要透明。
这样,您就不必进行任何位图处理。但是,请选择一种更适合您的需求。
TA贡献1804条经验 获得超2个赞
谢谢您的答复,此事已完成。
Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Paint paint = new Paint();
paint.setStrokeWidth(5);
Canvas c = new Canvas(circleBitmap);
//This draw a circle of Gerycolor which will be the border of image.
c.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2, paint);
BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
paint.setAntiAlias(true);
paint.setShader(shader);
// This will draw the image.
c.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2-2, paint);
使用imageLoader取整图像github.com/nostra13/Android-Universal-Image-Loader创建选项;
DisplayImageOptions options = new DisplayImageOptions.Builder()
// this will make circle, pass the width of image
.displayer(new RoundedBitmapDisplayer(getResources().getDimensionPixelSize(R.dimen.image_dimen_menu)))
.cacheOnDisc(true)
.build();
imageLoader.displayImage(url_for_image,ImageView,options);
或者,您可以从squre使用Picasso Library。
Picasso.with(mContext).load(URL+b.image)
.placeholder(R.drawable.profile)
.error(R.drawable.profile)
.transform(new RoundedTransformation(50, 4))
.resizeDimen(R.dimen.list_detail_image_size, R.dimen.list_detail_image_size)
.centerCrop()
.into(v.im_user);
您可以在此处下载RoundedTrasformation 文件
重要提示:我在使用UIL时发现了一个问题。如果您未将xml属性android:contentDescription =“ TODO”放在ImageView中。然后UIL显示简单图像。希望大家理解
- 3 回答
- 0 关注
- 491 浏览
添加回答
举报