Android 让图片等比例缩放的三种方法
方法一:客户端等比例
前提条件:服务器端需要返回原始图片的“宽和高”或者“宽高缩放比例”,客户端要显示的图片的宽或者高只要其一是固定的(例如:高度为200,宽度未知,或者高度为400宽度未知)
在这种条件下客户端可以根据服务端返回的图片的宽高或者宽高比例计算出图片相对于屏幕的宽或者高。例如:缩放比例为:宽(图片原始宽度200px)/高(图片原始高度400px) = 0.5 。客户端定义要显示的宽度为100px,则根据缩放比例高度应该显示200px(100/0.5=200)图片才不会变形。android:scaleType="fitXY"
方法二:服务端等比例
前提条件:客户端必须告诉服务端他要拿到的图片的宽度和高度。
服务端根据客户端给出的宽高,按照服务端能给到的最优方案返回一张按照等比例缩放的缩略图,给客户端显示 android:scaleType="fitXY"
方法三:客户端+服务端都等比例缩放
方法一和方法二都能够在一定程度上解决图片按等比例方式显示,但是都具有一定的不足,第一种方法的不足之处是:服务端返回的图片是原图,比较浪费流量和手机内存。第二中方法的不足之处是,有时候客户端给到服务端的宽高,服务端并不能够按照客户端的要求
返回。因此在显示上会出现一定的拉伸或者压缩。
比较好的一种方法是:第一种方法+第二种方法。首先服务端会给到客户端原始图片的宽高比例,客户端根据宽高比例,计算出最优的要显示到界面上的宽和高给到服务器。服务器拿到客户端给的宽高之后,计算出一个缩略图给到客户端,之后客户端拿到这张图片直接显示。android:scaleType="fitXY"
Android 让图片等比例缩放的三种方法的更多相关文章
- android加载大量图片内存溢出的三种方法
android加载大量图片内存溢出的三种解决办法 方法一: 在从网络或本地加载图片的时候,只加载缩略图. /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @para ...
- Android imageView图片按比例缩放
android:scaleType可控制图片的缩放方式,示例代码如下: <ImageView android:id="@+id/img" android:src=" ...
- Android成长之路-实现监听器的三种方法
第一种: 在Test类中 定义一个类接口OnClickListener 第二种:直接在Test类上写一个接口 其中的this相当于new OnClickListener()对象, 即class ...
- Android设置布局背景为白色的三种方法
一.在xml文件里可以直接设置: android:background="#ffffff" 其他颜色可以看这里;http://blog.csdn.net/yanzi1225627/ ...
- Android实现无标题栏全屏的三种方法
一.通过Java代码 在setContentView之前执行: requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏 getWindow().se ...
- Android中XML解析,保存的三种方法
简单介绍 在Android开发中,关于XML解析有三种方式,各自是: SAX 基于事件的解析器.解析速度快.占用内存少.非常适合在Android移动设备中使用. DOM 在内存中以树形结构存放,因此检 ...
- div盒子中子元素(子元素可能是盒子, 图片) 中居中的三种方法
- 理解CSS3中的background-size(对响应性图片等比例缩放)
理解CSS3中的background-size(对响应性图片等比例缩放) 阅读目录 background-size的基本属性 给图片设置固定的宽度和高度的 固定宽度400px和高度200px-使用ba ...
- 【转】微信小程序开发之图片等比例缩放 获取屏幕尺寸图片尺寸 自适应
原文[https://blog.csdn.net/qq_31383345/article/details/53127804] 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于 ...
随机推荐
- CSS元素(文本、图片)水平垂直居中方法
1.text-align:center; 2.margin:0 auto; 3.display:inline-block; + text-align:center; 4.position:relati ...
- React-classnames库
今天在项目中看到了大佬引入了classnames,之前没用过所以去搜了搜,感觉还真的是挺好用的,搜到一篇很不错的文章,跟原创作者交流了一下就转载过来了! 下面废话不多说,我们直接来看文章吧 首先我们我 ...
- css清除默认样式
CSS 清除默认样式 通常有以下几句就够了: *{margin:0;padding:0} li{list-style:none} img{vertical-align:top;border:non ...
- Windows下 webpack4.0 的安装
这里我们通过npm来进行安装 1. 安装 webpack // 全局安装webpack npm install webpack -g 2. 通过 webpack -v 命令查看当前安装的版本 此时如果 ...
- Python自动化开发之python的常用模块
python常用模块 模块的种类:模块分为三种,分别是自定义模块:内置标准模块(即标准库):开源模块(第三方). 以下主要研究标准模块即标准库:标准库直接导入即可,不需要安装. 时间模块:time , ...
- Apex 的异常处理
Apex 中的异常处理 在 Apex 中,和其他语言类似,对于异常处理通常使用 try.catch.finally.throw 等关键字. 对于每一个 try 代码段,必须要有至少一个 catch 或 ...
- eclipse没有server选项解决方法
eclipse是是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境. 它使用频率十分高,然而当使用它配置weblogic的时候,经常 ...
- python第四十八天--高级FTP
高级FTP服务器1. 用户加密认证2. 多用户同时登陆3. 每个用户有自己的家目录且只能访问自己的家目录4. 对用户进行磁盘配额.不同用户配额可不同5. 用户可以登陆server后,可切换目录6. 查 ...
- SQL SERVER利用BCP命令在命令行下导出数据到csv文件中
bcp "select * from (DBNAME).dbo.qt_trace where User_1 is not null" queryout c:\%date:~6,4% ...
- Unity LayerMask 的位运算
Unity的Layer Unity是用 int32来表示32个Layer层,int32用二进制来表示一共有32位. 0000 0000 0000 0000 0000 0000 0000 0000 31 ...