解决方案 »

  1. imgeview设背景确实是不可行的,不过可以考虑两个方向,一个是直接将图片资源裁剪成圆角的,第二是,才用覆盖另一个特殊的view在imageview上,使看起来有圆角,比如一个四周是背景颜色,中间是椭圆透明区域的view
      


  2. // 转换圆角为图片
    public static Drawable getRoundedCornerDrawable(Drawable drawable) { BitmapDrawable bd = (BitmapDrawable) drawable;
    Bitmap bitmap = bd.getBitmap();

    int width = bitmap.getWidth() < bitmap.getHeight() ? bitmap.getWidth()
    : bitmap.getHeight(); Bitmap output = Bitmap.createBitmap(width, width, Config.ARGB_8888);
    Canvas canvas = new Canvas(output); final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, width, width);
    final RectF rectF = new RectF(rect);
    final float roundPx = width; paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    canvas.drawBitmap(bitmap, rect, rect, paint); drawable = new BitmapDrawable(bitmap); 
    return drawable;
    }
      

  3. 这需要自定义imageview,实现圆角
      

  4. 问题已解决。楼主来结贴了!
      public static Bitmap getRoundCornerImage(Bitmap bitmap, int roundPixels)
        {
            //创建一个和原始图片一样大小位图
            Bitmap roundConcerImage = Bitmap.createBitmap(bitmap.getWidth(),
                    bitmap.getHeight(), Bitmap.Config.ARGB_8888);
            //创建带有位图roundConcerImage的画布
            Canvas canvas = new Canvas(roundConcerImage);
            //创建画笔
            Paint paint = new Paint();
            //创建一个和原始图片一样大小的矩形
            Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
            RectF rectF = new RectF(rect);
            // 去锯齿
            paint.setAntiAlias(true);
            //画一个和原始图片一样大小的圆角矩形
            canvas.drawRoundRect(rectF, roundPixels, roundPixels, paint);
            //设置相交模式
            paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
            //把图片画到矩形去
            canvas.drawBitmap(bitmap, null, rect, paint);
            return roundConcerImage;
        }
    在显示图片的时候调用这个方法就好啦!!
      

类似问题 »