您的位置:首页 > 其它

圆角头像的实现

2014-10-24 14:03 113 查看
在Activity中调用

[java] view
plaincopy

/* 将头像转为圆形 */  

   Resources res = getResources();  

   Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.head);  

   head.setImageBitmap(ImageHelper.toRoundBitmap(bmp));  

[java] view
plaincopy

//处理类  

public class ImageHelper {  

    /** 

     * 转换图片成圆形 

     * @param bitmap 传入Bitmap对象 

     * @return 

     */  

    public static Bitmap toRoundBitmap(Bitmap bitmap) {  

            int width = bitmap.getWidth();  

            int height = bitmap.getHeight();  

            float roundPx;  

            float left,top,right,bottom,dst_left,dst_top,dst_right,dst_bottom;  

            if (width <= height) {  

                    roundPx = width / 2;  

                    top = 0;  

                    bottom = width;  

                    left = 0;  

                    right = width;  

                    height = width;  

                    dst_left = 0;  

                    dst_top = 0;  

                    dst_right = width;  

                    dst_bottom = width;  

            } else {  

                    roundPx = height / 2;  

                    float clip = (width - height) / 2;  

                    left = clip;  

                    right = width - clip;  

                    top = 0;  

                    bottom = height;  

                    width = height;  

                    dst_left = 0;  

                    dst_top = 0;  

                    dst_right = height;  

                    dst_bottom = height;  

            }  

              

            Bitmap output = Bitmap. createBitmap(width,  

                            height, Config. ARGB_8888);  

            Canvas canvas = new Canvas(output);  

              

            final int color = 0xff424242;  

            final Paint paint = new Paint();  

            final Rect src = new Rect((int)left, ( int)top, (int)right, (int)bottom);  

            final Rect dst = new Rect((int)dst_left, ( int)dst_top, (int)dst_right, (int)dst_bottom);  

            final RectF rectF = new RectF(dst);  

  

            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, src, dst, paint);  

            return output;  

    }  

     

    // 下载图片转为bitmap  

    public static Bitmap getHttpBitmap(String url) {  

      URL u = null;  

      Bitmap bmp = null;  

       try {  

          u = new URL(url);  

  

      } catch (Exception e) {  

          // TODO: handle exception  

      }  

       try {  

          HttpURLConnection conn = (HttpURLConnection) u.openConnection();  

          conn.setConnectTimeout(0);  

          conn.setDoInput( true);  

          conn.connect();  

          InputStream ins = conn.getInputStream();  

          bmp = BitmapFactory. decodeStream(ins);  

          ins.close();  

      } catch (Exception e) {  

          // TODO: handle exception  

      }  

       return bmp;  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: