android:scaleType="matrix"布局文件加载图片时候的显示方式

来源:互联网 发布:美国克拉克森大学知乎 编辑:程序博客网 时间:2024/06/15 21:56

android:scaleType="center" 

以原图的几何中心点和ImagView的几何中心点为基准,按图片的原来size居中显示,不缩放,当图片长/宽超过View的长/宽,则截取图片的居中部分显示ImageView的size.当图片小于View 的长宽时,只显示图片的size,不剪裁。

android:scaleType="centerCrop"

 以原图的几何中心点和ImagView的几何中心点为基准,按比例扩大(图片小于View的宽时)图片的size居中显示,使得图片长 (宽)等于或大于View的长(宽),并按View的大小截取图片。当原图的size大于ImageView时,按比例缩小图片,使得长宽中有一向等于ImageView,另一向大于ImageView。实际上,使得原图的size大于等于ImageView的长(宽)。


android:scaleType="centerInside"

 以原图的几何中心点和ImagView的几何中心点为基准,将图片的内容完整居中显示,通过按比例缩小原来的size使得图片长(宽)等于或小于ImageView的长(宽)。


android:scaleType="fitCenter" 把图片按比例扩大(缩小)到View的宽度,居中显示

android:scaleType="fitEnd把图片按比例扩大(缩小)到View的宽度,显示在View的下部分位置

android:scaleType="fitStart把图片按比例扩大(缩小)到View的宽度,显示在View的上部分位置

android:scaleType="fitXY" 把图片按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满View.


android:scaleType="matrix" 用matrix来绘制(默认)



另外在java代码中

  matrix.setScale(interpolatedTime, interpolatedTime);
        matrix.preTranslate(-centerX, -centerY);

        matrix.postTranslate(centerX, centerY);



经常在中心缩放的应用中看到这段代码.


preTranslate是指在setScale前,平移,postTranslate是指在setScale后平移

注意他们参数是平移的距离,而不是平移目的地的坐标!


由于缩放是以(0,0)为中心的,所以为了把界面的中心与(0,0)对齐,就要preTranslate(-centerX, -centerY),

setScale完成后,调用postTranslate(centerX, centerY),再把图片移回来,这样看到的动画效果就是activity的界面图片从中心不停的缩放了


注:centerX和centerY是界面中心的坐标


0 0
原创粉丝点击