Android Imageview的7种裁剪模式 & Bitmap居中裁剪示例代码

本文详细介绍了Android中ImageView的7种裁剪模式,并提供了Bitmap居中裁剪的示例代码,帮助开发者实现图片显示的精确控制。
#.Imageview的7种裁剪模式
1.android:scaleType=“center”:居中显示。
    不缩放,如果有超出ImageView部分,则居中裁剪。
2.android:scaleType=“centerCrop”:居中裁剪。
    等比缩放,直到一边充满ImageView,另一边大于等于ImageView边界,超出ImageView的那一边被居中裁剪。
3.android:scaleType=“centerInside”:居中包含。
    不缩放或者等比缩放,直到一边充满,另一边小于等于边界:
       若原图比ImageView大,则会缩小;
       若原图比ImageView小,则会按照本来的尺寸显示,不做放大。
    第二种情况是跟"fitCenter”类型的差别,"fitCenter”两种情况都会进行缩放。
4. android:scaleType=“fitCenter”:等比缩放,直到一边充满,另一边小于等于边界,较小的一边会居中显示:
5. android:scaleType=“fitStart”:等比缩放,直到一边充满,另一边小于等于边界,较小一边与ImageView头部对齐。
6. android:scaleType=“fitEnd”:等比缩放,直到一边充满,另一边小于等于边界,较小一边与ImageView尾部对齐。
7.android:scaleType=“fitXY”:不等比缩放,拉伸并缩放图片,直到完全填充。
#.实现对Bitmap图片居中裁剪的实例代码(要实现别的操作,方法也类似)
/**
* 按照指定的宽高比例,对源Bitmap进行裁剪
* 注意,输出的Bitmap只是宽高比与指定宽高比相同,大小未必相同
* @param srcBitmap 源图片对应的Bitmap
* @param desWidth  目标图片宽度
* @param desHeight 目标图片高度
* @return
*/
private Bitmap centerCrop(Bitmap srcBitmap, int desWidth, int desHeight){
    int srcWidth = srcBitmap.getWidth();
    int srcHeight = srcBitmap.getHeight();
    int newWidth = srcWidth;
    int newHeight = srcHeight;
    float srcRate = (float)srcWidth/srcHeight;
    float desRate = (float)desWidth/desHeight;
    int dx = 0, dy = 0;
    if(srcRate == desRate){
        return srcBitmap;
    } else if(srcRate > desRate){
        newWidth = (int)(srcHeight * desRate);
        dx = (srcWidth-newWidth)/2;
    } else {
        newHeight = (int)(srcWidth / desRate);
        dy = (srcHeight - newHeight)/2;
    }
    //创建目标Bitmap,并用选取的区域来绘制
    Bitmap desBitmap = Bitmap.createBitmap(srcBitmap, dx, dy, newWidth, newHeight);
    return desBitmap;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值