android画布加载图片大小,android ImageView网络图片加载、动态设置尺寸、圆角..

该代码段展示了如何在Android中从URL加载图片,并根据指定的宽度、高度进行尺寸调整,同时提供了将图片转换为圆形的方法。通过使用BitmapFactory、Matrix和Canvas等工具,实现了图片的下载、缩放以及圆角效果的绘制。
摘要由CSDN通过智能技术生成

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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值