图片等比例缩放,从0.0左边开始剪切 保证图片不变形 /** * @Description * @Created by YCH on 2015/11/9. */ public class CropImageView extends ImageView { /** * 画布的宽度 */ private int width; /** * 画布的高度 */ private int height; float scaleWidth = 1.0f; float scaleHeight = 1.0f; public CropImageView(Context context) { super(context); } public CropImageView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); width = canvas.getWidth(); height = canvas.getHeight(); Drawable drawable = getDrawable(); if (drawable != null) { Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); if(bitmap != null){ int bmWidth = bitmap.getWidth(); int bmHeight = bitmap.getHeight(); float scale = 1.0f; float scaleBitmap = (float)bmWidth/(float)bmHeight;//图片宽高比 float scaleContainer = (float)width/(float)height;//容器宽高比 //如果容器的比例大于图片的比例 if(scaleContainer > scaleBitmap){ //根据宽度进行计算 scale = (float) width / (float) bmWidth; }else { //根据高度进行计算 scale = (float) height / (float) bmHeight; } Matrix matrix = new Matrix(); matrix.postScale(scaleWidth * scale, scaleHeight * scale); Rect rect = new Rect(); rect.left = 0; rect.top = 0; rect.right = width; rect.bottom = height; Bitmap bm = Bitmap.createBitmap(bitmap, 0, 0, bmWidth, bmHeight, matrix, true); canvas.drawBitmap(bm, rect, rect, null); } } } }
自定义ImageView
猜你喜欢
转载自u010991855.iteye.com/blog/2281205
今日推荐
周排行