首先说明下什么是FitIn,FitOut,我刚接触这个概念时也是一头雾水!这两个名词是我在新公司听到的,不知道类似的功能,大家是不是也是这么称呼!以下是我理解的!
先总体说下:FitIn和FitOut都是使图片宽或高和容器一致,然后缩放时,FitIn是再使高或宽小于容器的,FitOut是再使高或宽大于容器的。
FitIn:比如说有张图片,它的宽或高大于放图片的容器的宽高,如果想要图片完整地在容器中显示,那么就需要对图片进行适当比例的缩小,我们希望要保持宽或高与容器的一致。这样就会出现图片的宽和容器一致,而高比容器的小,或是高一致,宽比容器的小,
算法举例:
容器:width/height
图片:_bitmap.bitmapData.width,_bitmap.bitmapData.height
if( width/height < _bitmap.bitmapData.width/_bitmap.bitmapData.height)
{
_scaleMin = width/_bitmap.bitmapData.width;(取宽)
}
else
_scaleMin = height/_bitmap.bitmapData.height;(取高)
if(_bitmap.scaleX < _scaleMin || scaleToMin)
{
_bitmap.scaleX = _bitmap.scaleY = _scaleMin;
_bitmap.width = _bitmap.bitmapData.width * _scaleMin;
_bitmap.height = _bitmap.bitmapData.height * _scaleMin;
}
FitOut:保持图片的高与容器的高一致,然后使宽大于容器的宽。或是保持保持图片的宽与容器的宽一致,然后使高大于容器的高。
容器:width/height
图片:destWidth,destHeight
if( width/height < destWidth/destHeight)
{
_scaleMin = height/destHeight;(取高)
}
else
_scaleMin = width/destWidth;(取宽)
if(_bitmap.scaleX < _scaleMin || scaleToMin)
{
_bitmap.scaleX = _bitmap.scaleY = _scaleMin;
_bitmap.width = destWidth * _scaleMin;
_bitmap.height = destHeight * _scaleMin;
}
_bitmap.x = (width -_bitmap.width)/2;
_bitmap.y = (height -_bitmap.height)/2;
}
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐