本文地址:http://blog.csdn.net/Jaden_hool/article/details/49642297
效果图
1、横图原图:

横图聊天界面缩略图:

2、竖图原图:

竖图聊天界面缩略图:

3、聊天界面效果图:

一、首先要明确,”ImageView控件的大小“ 和 “用src属性设置的图片的大小”并不是一个概念,可以通过设置scaleType属性实现想要的效果。借用别的大神做的一张图简单介绍一下scaleType属性:

常量
public static final ImageView.ScaleType CENTER
在视图中使图像居中,不执行缩放。
在 XML 中可以使用的语法: android:scaleType=”center”。
public static final ImageView.ScaleType CENTER_CROP
均衡的缩放图像(保持图像原始比例),使图片的两个坐标(宽、高)都大于等于 相应的视图坐标(负的内边距)。图像则位于视图的中央。
在 XML 中可以使用的语法:android:scaleType=”centerCrop”。
public static final ImageView.ScaleType CENTER_INSIDE
均 衡的缩放图像(保持图像原始比例),使图片的两个坐标(宽、高)都小于等于 相应的视图坐标(负的内边距)。图像则位于视图的中央。
在 XML 中可以使用的语法:android:scaleType=”centerInside”。
public static final ImageView.ScaleType FIT_CENTER
使用 CENTER 方式缩放图像。
在 XML 中可以使用的语法: android:scaleType=”fitCenter”。
public static final ImageView.ScaleType FIT_END
使用 END 方式缩放图像。
在 XML 中可以使用的语法: android:scaleType=”fitEnd”。
public static final ImageView.ScaleType FIT_START
使用 START 方式缩放图像。
在 XML 中可以使用的语法:android:scaleType=”fitStart”。
public static final ImageView.ScaleType FIT_XY
使 用 FILL 方式缩放图像。
在 XML 中可以使用的语法: android:scaleType=”fitXY”。
public static final ImageView.ScaleType MATRIX
绘制时,使用图像矩阵方式缩放。图像矩阵可以通过 setImageMatrix(Matrix) 设置。在 XML 中可以使用的语法: android:scaleType=”matrix”。(此部分内容为转载)

public class ImageSize {private int width;private int height;public int getWidth() {return width;}public void setWidth(int width) {this.width = width;}public int getHeight() {return height;}public void setHeight(int height) {this.height = height;}}

二、根据以下方法得到ImageView控件的大小,但是图片的实际大小并不需要改变。

public static ImageSize getImageSize(Bitmap bitmap) {ImageSize imageSize = new ImageSize();if (null == bitmap || bitmap.isRecycled()) {return null;}ByteArrayOutputStream baos = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);byte[] byteTmp = baos.toByteArray();try {baos.close();} catch (IOException e) {e.printStackTrace();}BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();bitmapOptions.inJustDecodeBounds = true;BitmapFactory.decodeByteArray(byteTmp, 0, byteTmp.length, bitmapOptions);int outWidth = bitmapOptions.outWidth;int outHeight = bitmapOptions.outHeight;int maxWidth = 400;int maxHeight = 400;int minWidth = 150;int minHeight = 150;if (outWidth / maxWidth > outHeight / maxHeight) {//if (outWidth >= maxWidth) {//imageSize.setWidth(maxWidth);imageSize.setHeight(outHeight * maxWidth / outWidth);} else {imageSize.setWidth(outWidth);imageSize.setHeight(outHeight);}if (outHeight < minHeight) {imageSize.setHeight(minHeight);int width = outWidth * minHeight / outHeight;if (width > maxWidth) {imageSize.setWidth(maxWidth);} else {imageSize.setWidth(width);}}} else {if (outHeight >= maxHeight) {imageSize.setHeight(maxHeight);imageSize.setWidth(outWidth * maxHeight / outHeight);} else {imageSize.setHeight(outHeight);imageSize.setWidth(outWidth);}if (outWidth < minWidth) {imageSize.setWidth(minWidth);int height = outHeight * minWidth / outWidth;if (height > maxHeight) {imageSize.setHeight(maxHeight);} else {imageSize.setHeight(height);}}}return imageSize;}

三、最后一步非常重要,为ImageView添加属性android:scaleType=”centerCrop”。设置图片时,先从网络上下载得到bitmap对象,调用getImageSize(Bitmap bitmap)方法得到ImageView的宽高,在代码中动态为ImageView设置宽高即可:

ImageSize imageSize = BitmapUtils.getImageSize(loadedImage);LayoutParams imageLP = imageView.getLayoutParams();imageLP.width = imageSize.getWidth();imageLP.height = imageSize.getHeight();imageView.setLayoutParams(imageLP);

Android仿微信聊天图片缩略图裁剪相关推荐

  1. Android 仿微信聊天图片

    前言 在微信的聊天界面中,发送图片的时候显示图片如下,下面就来看看如何实现 实现 首先我们自定义一个ImageView用于显示聊天界面中的图片. 自定义ChatImageView继承ImageView ...

  2. Android仿微信聊天界面

    今天说说android的仿微信聊天界面,我只想说两个字:坑爹 项目已经传到了github: https://github.com/hebiao6446/Hantu-android- 还好我写过iOS仿 ...

  3. android格式化时间中文版,Android 仿微信聊天时间格式化显示功能

    本文给大家分享android仿微信聊天时间格式化显示功能. 在同一年的显示规则: 如果是当天显示格式为 HH:mm 例:14:45 如果是昨天,显示格式为 昨天 HH:mm 例:昨天 13:12 如果 ...

  4. android 仿微信聊天界面 以及语音录制功能,Android仿微信录制语音功能

    本文实例为大家分享了Android仿微信录制语音的具体代码,供大家参考,具体内容如下 前言 我把录音分成了两部分 1.UI界面,弹窗读秒 2.一个类(包含开始.停止.创建文件名功能) 第一部分 由于6 ...

  5. Android仿微信聊天记录“图片及视频”默认最新图片从底部显示(时间排序升序)

    Android仿微信聊天记录"图片及视频"默认最新图片从底部显示(时间排序升序) 1.设置recycler的LinearLayoutManager LinearLayoutMana ...

  6. android仿微信的图片选择器

    PictureSelector 项目地址: arvinljw/PictureSelector  简介:包含:多选.单选.拍照.预览.裁剪:兼容大图,兼容 7.0 更多: 作者    提 Bug    ...

  7. android仿微信聊天功能,Android高仿微信聊天界面代码分享

    微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们 ...

  8. android 仿微信聊天时间格式化显示

    仿微信聊天时间格式化显示. 在同一年的显示规则: 如果是当天显示格式为 HH:mm 例:14:45 如果是昨天,显示格式为 昨天 HH:mm 例:昨天 13:12 如果是在同一周 显示格式为 周一 H ...

  9. Android 仿微信 QQ 图片裁剪,赶紧收藏起来!

    在正文之前,先公布下周三的送书中奖名单,点赞前15名为: 码不停蹄 િ?ી.zdxོ.gaolhjy.C.Aiden_ryan.进进.WhenSun .明($?.啊鑫.久伴.街 景 -.小石头.纸.冯 ...

最新文章

  1. RDKit | 比较分子之间的相似性
  2. python中plot实现即时数据动态显示方法_python中plot实现即时数据动态显示方法
  3. 【跃迁之路】【597天】程序员高效学习方法论探索系列(实验阶段354-2018.09.25)...
  4. 商城项目-商品添加功能实现
  5. 异步IO\数据库\队列\缓存
  6. abstract的一些用法
  7. 8-5:C++继承之多继承,菱形继承,虚继承,虚基表,继承和组合
  8. VS2008开发中Windows Mobile 5.0 emulator连网的配置
  9. c语言贪吃蛇毕业论文,毕业论文c语言贪吃蛇
  10. matlab 误差修正模型,求问大神用R做VEC(误差修正)模型的程序包或者代码是什么啊?...
  11. 已知相关系数求解联合分布律
  12. 360浏览器自动填充表单
  13. 如何学习Java并发编程
  14. 港科夜闻|广州市市长郭永航先生与香港科大校董会廖长城先生一行举行座谈交流...
  15. 人脸检测实战进阶:使用 OpenCV 进行活体检测
  16. 计算型服务器 存储型服务器本质区别
  17. C语言常用算法题 (嵌入式算法题) 28道
  18. RTP打包音频g711
  19. 命令行修改本地组策略_通过命令行从Windows进行本地组管理
  20. AndroidX86模拟器Genymotion的一些使用和另一款Andy模拟器

热门文章

  1. 一个在期货市场狂赚10亿的大佬,他的辛酸谁能懂?
  2. centos7-32只有lo网卡的解决方法
  3. Git生成多个ssh-keygen
  4. HTML中强制换行和自动换行,网页中的纯文本如何强制换行(txt文件)
  5. AquilaChat-7B: 国产开源大模型新成员——AI领域的创新型研发机构智源人工智能研究院出品
  6. 【BZOJ2393】Cirno的完美算数教室
  7. VSM Studio uln2003驱动步进电机+单按键启保停正反转八拍控制
  8. 什么是MPP数据库?
  9. Power BI DAX 分组排名 分层排名
  10. 2022:股票程序化交易实战2022Q2