【Android】adjustViewBounds 的理解和使用

理解

adjustViewBounds 是一个 ImageView 的属性,用于调整 ImageView 的边界以适应图像的尺寸。当设置为 true 时,ImageView 的边界将根据图像的宽高比例进行调整,以确保图像完全显示在 ImageView 内部。

理解和使用 adjustViewBounds 的步骤如下:

  1. 在 XML 布局文件中,将 adjustViewBounds 设置为 true:
xml 复制代码
<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:src="@drawable/my_image" />
  1. 在代码中,根据需要设置 ImageView 的宽度和高度。可以使用固定值、wrap_content 或者是根据屏幕尺寸动态计算:
java 复制代码
ImageView imageView = findViewById(R.id.imageView);

// 设置固定宽度和高度
imageView.setLayoutParams(new LinearLayout.LayoutParams(200, 200));

// 使用 wrap_content
imageView.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT));

// 动态计算宽度和高度
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int screenWidth = displayMetrics.widthPixels;
int desiredWidth = screenWidth / 2;
int desiredHeight = (int) (desiredWidth * 0.75);
imageView.setLayoutParams(new LinearLayout.LayoutParams(desiredWidth, desiredHeight));
  1. 根据需要,可以结合其他属性(如 scaleType)来调整图像的缩放方式和对齐方式,以获得最佳的显示效果。
xml 复制代码
<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:scaleType="centerCrop"
    android:src="@drawable/my_image" />

通过使用 adjustViewBounds 属性,可以确保图像在 ImageView 内部完整显示,并且在调整 ImageView 的大小时保持图像的宽高比例。这在需要显示不同尺寸图像的应用程序中非常有用,可以有效地避免图像变形或裁剪。

不过上述的逻辑只是表明该配置是为了保证图片的裁剪效果罢了,重点还是查阅如下的参考

参考:Android:谈谈最被误读的属性adjustViewBounds

相关推荐
大圣编蚕8 小时前
初探 NDK 的世界:从零开始理解 Android 原生开发
android
云贝贝贝8 小时前
MySQL 慢查询定位与索引优化实战
android
骑着蜗牛撵大象3279 小时前
服务下线不再炸:分层关闭、TCP 存活探测与负载均衡排水的落地套路
android·tcp/ip·负载均衡·tcp·高可用·健康检查·优雅关闭
三少爷的鞋11 小时前
别再这么写协程了!Marcin Moskała 剖析的 几个常见协程误区与重构
android
mmsx12 小时前
Android 防二次打包第一道锁:签名校验与完整性校验
android·kotlin
mmsx12 小时前
Android 混淆不等于安全:二次打包链路完整走一遍
android·kotlin
小宋102114 小时前
Agent轨迹级评测实战:工具选择、预算超限与回归门禁
android·网络·人工智能·回归
墨天梦16 小时前
D05_ViewModel与单向数据流
android·kotlin
蒸鱼Yuzheng17 小时前
Android 构建可复现性:APK 指纹、文件级差异与供应链审计
android·apk·devops·软件供应链·可复现构建
墨天梦20 小时前
D03_Compose列表与稳定身份
android·gitee·kotlin