• 【Android】adjustViewBounds 的理解和使用


    理解

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

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

    1. 在 XML 布局文件中,将 adjustViewBounds 设置为 true
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:src="@drawable/my_image" />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 在代码中,根据需要设置 ImageView 的宽度和高度。可以使用固定值、wrap_content 或者是根据屏幕尺寸动态计算:
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    1. 根据需要,可以结合其他属性(如 scaleType)来调整图像的缩放方式和对齐方式,以获得最佳的显示效果。
    <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" />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

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

  • 相关阅读:
    瑞芯微RK3568:Debian系统如何安装Docker
    基于单片机的室内空气质量监控系统设计
    【汇编语言04】第3章 寄存器(内存访问)——理论知识
    Mysql之聚合函数
    Webpack完整打包流程分析
    领英辅助工具领英精灵分组功能解析
    解决Java异常java.sql.SQLException: Unexpected exception encountered during query.
    微前端是如何实现作用域隔离的?
    Linux 操作系统启动流程1
    高斯消元法求解方程组(要有python基础和线性代数的基础)
  • 原文地址:https://blog.csdn.net/weixin_44002043/article/details/133860645