packagecom.example.hangliao.oneyuanrecharge.helper;importandroid.graphics.Bitmap;importandroid.graphics.Bitmap.Config;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Matrix;importandroid.graphics.Paint;importandroid.graphics.PorterDuff.Mode;importandroid.graphics.PorterDuffXfermode;importandroid.graphics.Rect;importandroid.graphics.RectF;importandroid.os.Handler;importandroid.os.Message;importandroid.widget.ImageView;importjava.io.InputStream;importjava.net.HttpURLConnection;importjava.net.URL;public classImageViewLoadAndSetSizeAndCircle {privatePicHandler pic_hdl;privateImageView imgView;privateString url;private intwidht;private intheight;private intCircleSize;/*** 通过图片url路径获取图片并显示到对应控件上
*
*@paramimgView
*@paramurl*/
public void setImage(ImageView imgView, String url,int widht,int height,intCircleSize) {this.url =url;this.imgView =imgView;this.widht=widht;this.height=height;this.CircleSize=CircleSize;
pic_hdl= newPicHandler();
Thread t= newLoadPicThread();
t.start();
}class LoadPicThread extendsThread {
@Overridepublic voidrun() {
Bitmap img=getUrlImage(url);
System.out.println(img+ "---");
Message msg=pic_hdl.obtainMessage();
msg.what= 0;
msg.obj=img;
pic_hdl.sendMessage(msg);
}
}class PicHandler extendsHandler {
@Overridepublic voidhandleMessage(Message msg) {
Bitmap myimg=(Bitmap) msg.obj;
imgView.setImageBitmap(myimg);
}
}publicBitmap getUrlImage(String url) {
Bitmap img= null;try{
URL picurl= newURL(url);
HttpURLConnection conn=(HttpURLConnection) picurl
.openConnection();
conn.setConnectTimeout(6000);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.connect();
InputStream is=conn.getInputStream();
img=BitmapFactory.decodeStream(is);
is.close();
}catch(Exception e) {
e.printStackTrace();
}
img=zoomImage(img,this.widht,this.height);returnimg;
}public Bitmap zoomImage(Bitmap bgimage, doublenewWidth,doublenewHeight) {//获取这个图片的宽和高
float width =bgimage.getWidth();float height =bgimage.getHeight();//创建操作图片用的matrix对象
Matrix matrix = newMatrix();//计算宽高缩放率
float scaleWidth = ((float) newWidth) /width;float scaleHeight = ((float) newHeight) /height;//缩放图片动作
matrix.postScale(scaleWidth, scaleHeight);
Bitmap bitmap= Bitmap.createBitmap(bgimage, 0, 0, (int) width,
(int) height, matrix, true);if (CircleSize>0) //需要圆角
{
bitmap=bitmapRound(bitmap,CircleSize);
}else //不需要圆角
{
}returnbitmap;
}private Bitmap bitmapRound(Bitmap mBitmap,floatCircleSize){
Bitmap bitmap=Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Config.ARGB_4444);
Canvas canvas= newCanvas(bitmap);
Paint paint= newPaint();
paint.setAntiAlias(true);//设置矩形大小
Rect rect = new Rect(0,0,mBitmap.getWidth(),mBitmap.getHeight());
RectF rectf= newRectF(rect);//相当于清屏
canvas.drawARGB(0, 0, 0, 0);//画圆角
canvas.drawRoundRect(rectf, CircleSize, CircleSize, paint);//取两层绘制,显示上层
paint.setXfermode(newPorterDuffXfermode(Mode.SRC_IN));//把原生的图片放到这个画布上,使之带有画布的效果
canvas.drawBitmap(mBitmap, rect, rect, paint);returnbitmap;
}
}