方法一:客户端等比例

  前提条件:服务器端需要返回原始图片的“宽和高”或者“宽高缩放比例”,客户端要显示的图片的宽或者高只要其一是固定的(例如:高度为200,宽度未知,或者高度为400宽度未知)

  在这种条件下客户端可以根据服务端返回的图片的宽高或者宽高比例计算出图片相对于屏幕的宽或者高。例如:缩放比例为:宽(图片原始宽度200px)/高(图片原始高度400px) = 0.5 。客户端定义要显示的宽度为100px,则根据缩放比例高度应该显示200px(100/0.5=200)图片才不会变形。android:scaleType="fitXY"

方法二:服务端等比例

  前提条件:客户端必须告诉服务端他要拿到的图片的宽度和高度。

  服务端根据客户端给出的宽高,按照服务端能给到的最优方案返回一张按照等比例缩放的缩略图,给客户端显示 android:scaleType="fitXY"

方法三:客户端+服务端都等比例缩放

  方法一和方法二都能够在一定程度上解决图片按等比例方式显示,但是都具有一定的不足,第一种方法的不足之处是:服务端返回的图片是原图,比较浪费流量和手机内存。第二中方法的不足之处是,有时候客户端给到服务端的宽高,服务端并不能够按照客户端的要求

返回。因此在显示上会出现一定的拉伸或者压缩。

  比较好的一种方法是:第一种方法+第二种方法。首先服务端会给到客户端原始图片的宽高比例,客户端根据宽高比例,计算出最优的要显示到界面上的宽和高给到服务器。服务器拿到客户端给的宽高之后,计算出一个缩略图给到客户端,之后客户端拿到这张图片直接显示。android:scaleType="fitXY"

Android 让图片等比例缩放的三种方法的更多相关文章

  1. android加载大量图片内存溢出的三种方法

    android加载大量图片内存溢出的三种解决办法 方法一:  在从网络或本地加载图片的时候,只加载缩略图. /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @para ...

  2. Android imageView图片按比例缩放

    android:scaleType可控制图片的缩放方式,示例代码如下: <ImageView android:id="@+id/img" android:src=" ...

  3. Android成长之路-实现监听器的三种方法

      第一种:  在Test类中  定义一个类接口OnClickListener 第二种:直接在Test类上写一个接口 其中的this相当于new OnClickListener()对象, 即class ...

  4. Android设置布局背景为白色的三种方法

    一.在xml文件里可以直接设置: android:background="#ffffff" 其他颜色可以看这里;http://blog.csdn.net/yanzi1225627/ ...

  5. Android实现无标题栏全屏的三种方法

    一.通过Java代码 在setContentView之前执行: requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏 getWindow().se ...

  6. Android中XML解析,保存的三种方法

    简单介绍 在Android开发中,关于XML解析有三种方式,各自是: SAX 基于事件的解析器.解析速度快.占用内存少.非常适合在Android移动设备中使用. DOM 在内存中以树形结构存放,因此检 ...

  7. div盒子中子元素(子元素可能是盒子, 图片) 中居中的三种方法

  8. 理解CSS3中的background-size(对响应性图片等比例缩放)

    理解CSS3中的background-size(对响应性图片等比例缩放) 阅读目录 background-size的基本属性 给图片设置固定的宽度和高度的 固定宽度400px和高度200px-使用ba ...

  9. 【转】微信小程序开发之图片等比例缩放 获取屏幕尺寸图片尺寸 自适应

    原文[https://blog.csdn.net/qq_31383345/article/details/53127804] 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于 ...

随机推荐

  1. expressjs项目里使用npm run dev,实现热更新

    只需要在package.json文件里添加一句代码 "dev": "supervisor -i ./views ./bin/www" 添加的位置如上图所示, 然 ...

  2. 【代码笔记】Web--使用Chrome来查看网页源代码

    一,用Chrome打开百度页面,如图所示. 二,鼠标右键--->显示网页源代码--->如图所示. 三,鼠标右键--->检查---->如图所示.此时可以通过Device来看不同设 ...

  3. python练习:http协议介绍

    一.HTTP协议 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Interne ...

  4. 移动端web页面开发常用的头部标签设置

    在移动端web页面开发中,我们常需要设置各种头部标签以帮助浏览器更好的解析页面,将页面完美呈现,这里列出了工作中常用的各种头部标签,以备查询. viewport <meta name=" ...

  5. 慕学在线网0.5_xadmin的全局配置

    全局配置包括了以下修改: 开启主题功能: 修改左上角的"django Xadmin"和主界面的"我的公司": App菜单收叠: App名字修改(汉化). 1.把 ...

  6. python并发编程之线程

    操作系统线程理论 参考资料:http://www.cnblogs.com/Eva-J/articles/8306047.html 线程和python 理论知识 全局解释器锁GIL Python代码的执 ...

  7. jmeter 压力测试

    转自: https://blog.csdn.net/cbzcbzcbzcbz/article/details/78023327 Jmeter压力测试简单教程(包括服务器状态监控) 2017年09月18 ...

  8. 02-OpenLDAP配置

    OpenLDAP配置 在OpenLDAP 2.4版本中,配置OpenLDAP的方法有两种:一种通过修改配置文件实现配置,另一种通过修改数据库的形式完成配置. 通过配置数据库完成各种配置,属于动态配置且 ...

  9. 校园网下对VMware网络的配置

    1.参考:https://jingyan.baidu.com/article/8275fc8675c22646a03cf6b8.html 2.因为校园网的每一次连接都是自动获得IP地址的,所以虚拟机要 ...

  10. Emmet快速编写代码

    Emmet快速编写代码 ★div → <div></div>, span → <span></span> ★CSS选择器 ​ 给标签指定id选择器 di ...