android展示图片
A. 如何让android显示原图,不缩小图片
这里面的参数你都试一下,应该有一个可以。
ImageView的ScaleType属性
ImageView的属性android:scaleType,即
ImageView.setScaleType(ImageView.ScaleType)属性如下:CENTER
/center
按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截
取图片的居中部分显示
CENTER_CROP
/
centerCrop
按比例扩大图片的size居中显示,使得图片长
(宽)等于或大于View的长(宽)
CENTER_INSIDE
/
centerInside
将图片的内容完整居中显示,通过按比例缩小
或原来的size使得图片长/宽等于或小于View的长/宽
FIT_CENTER
/
fitCenter
把图片按比例扩大/缩小到View的宽度,居中显示
FIT_END
/
fitEnd
把
图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
FIT_START
/
fitStart
把
图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
FIT_XY
/
fitXY
把图片
不按比例
扩大/缩小到View的大小显示
B. android画一张图片,缩放显示并且放大不失真
这个问题涉及图片呈现的一整套方案。归纳而言这个问题是:给定任意尺寸的图片如何在任意尺寸分辨率的机器上显示?并且能够保持图片原来的清晰度。一般采用如下方案来解决这个问题:
1、首先给原图片创建一块内存缓存副本。如果不创建缓存的话,那么任何一次图片的剪切、缩放等操作都将丢失图片信息,使得保持原有图片的滋味那是不可能的。当然对于一般的程序而言,这个操作只需要调用简单的API即可完成。例如Android,只需要创建一个对应图片的Bitmap对象即可。
2、如果想要在设备显示的初始化状态图片即为满屏,那么必须调用相关API动态获得设备的分辨率。然后按设备分辨率的大小对图片进行剪切并显示到设备上。
注意:在获得图片分辨率后,如果分辨率大于图片,那不用说,直接显示图片就好。但是如果小于图片,此时有多种选择。可以将图片缩放至屏幕分辨率(图片纵横比可能失真)也可以选择剪切图片的一部分显示到屏幕上。
3、对图片进行缩放或者移动
我们在图片第一次显示的时候无论是选择缩放还是剪切,都要记录下图片被缩放的比例或者剪辑的范围。这样在用户再次移动或者缩放的时候,根据之前的缩放比例和移动坐标,计算当前应该移动的位置和缩放比例。并且根据计算结果对缓存的图片进行剪辑并显示到屏幕上。
其实整个过程可以概括为如下流程:
——>图片的初始缩放比例和显示起点坐标——>用户触发缩放或者移动操作——>计算新的图片缩放比例和显示起点坐标——>根据新的缩放比例和显示起点坐标剪辑缓存图片并绘制到屏幕上......
C. Android超简单实现炫酷的图片展示效果
这里的实现原理很简单,就是添加多个矩形路径,并不断的延长各个矩形路径的宽度(通过onDraw方法的递归实现),然后在矩形路径中绘制Bitmap即可。
1. 构建用于展示的Bitmap
这里我们选择在onSizeChanged方法中初始化Bitmap,因为当控件大小改变时方便我们重新计算所需展示Bitmap的大小。
2. 构建矩形裁剪区域并添加到Path中
3. 在对应的路径中绘制出Bitmap
这里使用Canvas的clipPath方法将画布裁切成路径的形状,然后在裁切后的画布上绘制图片。
4. 利用递归实现动画效果
5. 当图片完全显示时替换图片
图片完全显示也是cilpWidth>控件宽度的时候。
扫描式图片展示