ImageView android:scaleType各种属性

ImageView android:scaleType各种属性

1.fitXY属性

  • 功能描述 :该属性会拉伸图片,使其完全填充ImageView的宽和高。这可能会导致图片变形,因为它不考虑保持图片的原始宽高比。
  • 适用场景 :当对图片的形状准确性要求不高,并且需要完全覆盖ImageView的空间时可以使用。例如,在一些背景图片的场景中,可能需要图片填满整个视图区域,对拉伸导致的变形可以接受。
  • 示例代码(XML 布局)
XML 复制代码
   <ImageView
       android:id="@+id/imageView_fitXY"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:scaleType="fitXY"/>

2.center属性

  • 功能描述 :将图片按照原始大小,在ImageView的中心位置显示。如果图片的尺寸大于ImageView的尺寸,图片会超出ImageView的边界显示;如果图片尺寸小于ImageView,则会在ImageView中心显示,周围会有空余空间。
  • 适用场景 :适用于需要在视图中心显示完整原始图片,且不介意图片超出边界或者周围有空白的情况。比如在一个包含多个小图标ImageView的布局中,希望图标以原始大小在中心显示。
  • 示例代码(XML 布局)
XML 复制代码
   <ImageView
       android:id="@+id/imageView_center"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:scaleType="center"/>

3.centerCrop属性

  • 功能描述 :会在保持图片宽高比的前提下,对图片进行缩放,使得图片能够完全覆盖ImageView。这可能会导致图片的部分内容被裁剪掉,但是能够保证ImageView被图片填满,不会出现空白区域。
  • 适用场景 :当需要确保ImageView被图片填满,并且对图片内容的完整性要求不是绝对的,比如在一些需要突出显示图片主体部分,且图片布局需要填满整个视图的场景,如封面图片展示。
  • 示例代码(XML 布局)
XML 复制代码
   <ImageView
       android:id="@+id/imageView_centerCrop"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:scaleType="centerCrop"/>

4.centerInside属性

  • 功能描述 :在保持图片宽高比的情况下,将图片放置在ImageView内部。如果图片的尺寸小于或等于ImageView的尺寸,图片会以原始大小在ImageView中心显示;如果图片尺寸大于ImageView,则会按照fitCenter的方式进行缩放,使得图片完整地放置在ImageView中。

  • 适用场景 :适用于希望图片在ImageView内尽可能大地显示,同时要保持图片原始形状,并且避免过度裁剪的情况。例如在图片展示应用中,对于不同尺寸的图片在统一的ImageView布局中进行展示。

  • 示例代码(XML 布局)

    复制代码
     <ImageView
         android:id="@+id/imageView_centerInside"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:scaleType="centerInside"/>

5.fitCenter属性

  1. fitCenter不是裁剪操作
    • fitCenter的主要作用是在保持图片宽高比的情况下,将图片完整地放置在ImageView中。它不会对图片进行裁剪。
    • 例如,有一张宽高比为 4:3 的图片,ImageView的宽高比为 16:9。当使用fitCenter时,图片会按照其原始宽高比缩放,使得图片的宽度或者高度能够适应ImageView的尺寸,并且在ImageView中居中显示。如果图片的宽度适应了ImageView的宽度,那么图片的高度会小于ImageView的高度,上下会有空白区域;反之,如果图片的高度适应了ImageView的高度,左右会有空白区域。
  2. 关于缩放(放大或缩小)
    • fitCenter会根据ImageView和图片本身的尺寸进行缩放。如果图片的尺寸大于ImageView的尺寸,图片会被缩小;如果图片的尺寸小于ImageView的尺寸,图片会被放大(在保持宽高比的情况下),直到图片的某一个维度(宽或者高)与ImageView的相应维度匹配。
    • 以一个简单的例子来说明,假设ImageView的宽度为 300px,高度为 300px,有一张宽度为 600px,高度为 400px 的图片。当使用fitCenter加载这张图片时,图片会按照宽高比(3:2)进行缩放,使得图片的宽度缩放为 300px(因为要适应ImageView的宽度),此时高度会根据宽高比计算为 200px,图片会在ImageView中居中显示,上下会有 100px 的空白区域。
  1. 布局设置 为了让ImageView能够自适应内容,需要将scaleType设置为fitCenter。这会使得图片在保持宽高比的情况下,尽可能大地显示在ImageView中,不会拉伸。
XML 复制代码
   <ImageView
       android:id="@+id/imageView"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:scaleType="fitCenter"/>
  • 这里layout_widthlayout_height可以根据具体的布局需求进行调整。match_parent表示让ImageView的宽和高与父容器相同,也可以使用wrap_content或者具体的尺寸值(如200dp等)。
相关推荐
恋猫de小郭13 分钟前
Flutter 官方多窗口体验 ,为什么 Flutter 推进那么慢,而 CMP 却支持那么快
android·前端·flutter
yan123686 小时前
Linux 驱动之设备树
android·linux·驱动开发·linux驱动
aningxiaoxixi8 小时前
android stdio 的布局属性
android
CYRUS STUDIO9 小时前
FART 自动化脱壳框架一些 bug 修复记录
android·bug·逆向·fart·脱壳
寻找优秀的自己10 小时前
Cocos 打包 APK 兼容环境表(Android API Level 10~15)
android·cocos2d
大胃粥10 小时前
WMS& SF& IMS: 焦点窗口更新框架
android
QING61811 小时前
Gradle 核心配置属性详解 - 新手指南(二)
android·前端·gradle
QING61811 小时前
Gradle 核心配置属性详解 - 新手指南(一)
android·前端·gradle
_一条咸鱼_14 小时前
Android Runtime内存管理子系统启动流程原理(13)
android·面试·android jetpack