如何制作一个圆形的ImageView?

我想做这样的事情。

http://img2.mukewang.com/5dde1abb00013aeb01110101.jpg

这是带有名称和用户图像的列表视图行。


我进行了一些搜索,并完成了图像循环,但不是完美的解决方案。任何帮助都会帮助我。


我的代码添加到Image Loader类


public Bitmap processBitmap(Bitmap bitmap) {

    int pixels = 0;

    if (mRound == 0)

        pixels = 120;

    else

        pixels = mRound;

    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),

            bitmap.getHeight(), Config.ARGB_8888);

    Canvas canvas = new Canvas(output);


    final int color = 0xff424242;

    final Paint paint = new Paint();

    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());

    final RectF rectF = new RectF(rect);

    final float roundPx = pixels;


    paint.setAntiAlias(true);

    canvas.drawARGB(0, 0, 0, 0);

    paint.setColor(color);

    canvas.drawRoundRect(rectF, roundPx, roundPx, paint);


    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

    canvas.drawBitmap(bitmap, rect, rect, paint);


    return output;

}


慕田峪4524236
浏览 492回答 3
3回答

莫回无

您也可以使用此功能...对我有用。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;}

收到一只叮咚

这可能不会回答您的问题,但是,作为替代方案,您可以通过在FrameLayout例如一个2 ImageViews中模仿这种效果:一个在底部-这将是图片,一个在顶部-这将是灰色中间有一个圆形的正方形,而圆形的“主体”要透明。这样,您就不必进行任何位图处理。但是,请选择一种更适合您的需求。

慕婉清6462132

谢谢您的答复,此事已完成。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显示简单图像。希望大家理解
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android