android 从服务器请求url并做圆角处理

来源:互联网 发布:淘宝无法投诉卖家 编辑:程序博客网 时间:2024/06/05 05:08

//服务器给个url在客户端请求并且进行圆角处理

//用的xutils框架get请求

  private void get_shifu_img() {
        
         String str_url="";
        
                 String  t=String.valueOf(System.currentTimeMillis()).substring(0,10);
                 str_url=Config.STR_SERVICE_URL + "/get_master_img/client_type/android/t/"+t+"/u/"+u+"/q/"+Common.toSign(u, p, t);
                
                 HttpUtils http_get = new HttpUtils();
                   
                    http_get.send(HttpMethod.GET, str_url, new RequestCallBack<String>() {
                        
                         @Override
                            public void onLoading(long total, long current, boolean isUploading) {
                            }
                        @Override
                        public void onFailure(HttpException arg0, String arg1) {
                             Toast.makeText(MapActivity.this, "加载失败,请检查网络设置", Toast.LENGTH_SHORT).show();
                        }
                        @SuppressLint("NewApi")
                        @Override
                        public void onSuccess(ResponseInfo<String> arg0) {
                            try {
                                JSONObject jo = Common.toJSONObject(arg0.result);
                               img_me=    jo.getString("info");
                    //           bitmapUtils.display(iv_shifu_touxiang,Config.STR_SERVICE_URL+img_me);如果不进行圆角处理,在这里就直接可以用display了
                               getBitmap(Config.STR_SERVICE_URL+img_me);  //这个方法把url网址转变成bitmap图片
                               
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    });
         
    }


void getBitmap(final String path){
         new Thread(){
             @Override
            public void run() {
                 URL url=null;
                try {
                url = new URL(path);
                    
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }
                if(url!=null){
                    try {
                         HttpURLConnection conn;
                        conn = (HttpURLConnection)url.openConnection();
                        conn.setConnectTimeout(5000);
                        conn.setRequestMethod("GET");
                         if(conn.getResponseCode() == 200){
                             InputStream inputStream = conn.getInputStream();
                             Bitmap       bitmap = BitmapFactory.decodeStream(inputStream);//把流转换成bitmap
                             Message msg = new Message();  //不能放在主线程之中以免阻塞
                                msg.what = 110;
                                msg.obj = bitmap;
                                handler.sendMessage(msg);
                         }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
             
                }
                   
            };
         }.start();
     }

new 一个handler接收下
 case 110:
                      bit=(Bitmap) msg.obj;
                      Bitmap output=toRoundBitmap(bit);//转换图片为圆形
                        iv_shifu_touxiang.setImageBitmap(output);   
                     break;


public 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;  
                left = 0;  
                top = 0;  
                right = width;  
                bottom = 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, Bitmap.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); // 填充整个Canvas  
            paint.setColor(color);  
      
            // 以下有两种方法画圆,drawRounRect和drawCircle  
            // canvas.drawRoundRect(rectF, roundPx, roundPx, paint);// 画圆角矩形,第一个参数为图形显示区域,第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。  
            canvas.drawCircle(roundPx, roundPx, roundPx, paint);  
      
            paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置两张图片相交时的模式,参考http://trylovecatch.iteye.com/blog/1189452  
            canvas.drawBitmap(bitmap, src, dst, paint); //以Mode.SRC_IN模式合并bitmap和已经draw了的Circle  
              
            return output;  
        }

0 0
原创粉丝点击