打开您的 Android 手机,查看其中存在的应用程序并尝试查找是否有一些应用程序没有任何图像。你有得到吗?答案将是一个很大的“否”(我怎么知道?不,我无法使用您的手机:))。这是因为每个应用程序都使用某种或其他形式的图像来获得更好的用户体验。
所以,我们作为 Android 开发者非常喜欢添加图片,或者我们可以说将ImageView添加到我们的应用程序中。但是很多时候,我们面临着与图像缩放相关的各种问题,即您的图像将被裁剪,或者您的图像将左对齐,并且在缩放图像时会出现许多其他问题。
所以,欢迎来到 MindOrks!在本篇博客中,我们将学习 ImageView ScaleType。让我们开始吧。
注意:在本博客中,我将使用 MindOrks 徽标。您可以下载下面的图像并在您的项目中使用它。
将图像添加到项目
首先,我们需要在我们的项目中添加一张图片。复制所需的图像并粘贴到res > drawable directory
. 之后,将一个添加ImageView
到您的 XML 文件中。这是我的activity_main.xml
文件的代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="240dp"
android:src="@drawable/mindorks_logo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
以下是上述 XML 代码的输出:
我们将使用上面的图像作为参考,与应用一些后的输出图像进行比较ScaleType
。
Android中的ImageView ScaleType
ImageView
在 Android 中,我们可以通过使用各种ScaleType
s来缩放 a 的边界。通过使用ScaleType
,图像的边界被缩放到 的边界ImageView
。以下是 ScaleType
Android中使用的s:
- 中央
- CENTER_CROP
- CENTER_INSIDE
- FIT_CENTER
- FIT_START
- FIT_END
- FIT_XY
- 矩阵
让我们一一学习。
中央
CENTER ScaleType 用于通过保持相同的纵横比将图像放置在该图像所在的 ImageView 的中心。这里没有进行缩放,在图像居中时,如果图像太大以至于它不适合中心,那么图像的某些部分将被裁剪。
下面的代码行用于应用 CENTER ScaleType:
android:scaleType="center"
输出将如下所示:
如果您将上面的图像与我们的原始图像进行比较,您会发现图像的某些部分被裁剪,因为图像在这里居中。
CENTER_CROP
CENTER_CROP ScaleType 用于将图像放置在 ImageView 的中心,并通过保持纵横比统一缩放图像。所以基本上它以这样一种方式缩放,即图像的宽度或高度之一等于 ImageView 的宽度和高度。在缩放期间,如果其中任何一个变得相等,则缩放将停止,其余部分将被裁剪。因此,图像的尺寸可以等于或大于 ImageView 的尺寸。
下面的代码行用于应用 CENTER_CROP ScaleType:
android:scaleType="centerCrop"
输出将如下所示:
在上图中,当图像的宽度与 ImageView 的宽度相等时进行缩放,然后停止缩放并裁剪其余部分。
CENTER_INSIDE
CENTER_INSIDE ScaleType 用于将图像放置在 ImageView 的中心,并通过保持纵横比统一缩放图像。所以基本上缩放完成,直到图像的宽度和高度都小于 ImageView 的宽度和高度。因此,无论图像大小如何,图像都将放在 ImageView 中,并且不会执行图像裁剪。
下面的代码行用于应用 CENTER_INSIDE ScaleType:
android:scaleType="centerInside"
输出将如下所示:
在上图中,进行了缩放,直到图像的宽度和高度都等于 ImageView 的宽度和高度。
FIT_CENTER
FIT_CENTER ScaleType 用于将图像放置在 ImageView 的中心,并通过保持纵横比统一缩放图像,并且不会执行图像裁剪。图像的宽度和高度根据图像的大小按比例缩小或放大。所以基本上缩放完成,直到图像的宽度和高度都小于 ImageView 的宽度和高度。任何宽度或高度都必须与 ImageView 的宽度或高度相同。
下面的代码行用于应用 FIT_CENTER ScaleType:
android:scaleType="fitCenter"
输出将如下所示:
在上图中,图像被拟合在中心,没有任何裁剪。
FIT_START
FIT_START ScaleType 用于将图像放置在 ImageView 的最左侧和顶部,并通过保持纵横比统一缩放图像,并且不会执行图像裁剪。图像的宽度和高度根据图像的大小按比例缩小或放大。所以基本上缩放是在左侧完成的,直到图像的宽度和高度都小于 ImageView 的宽度和高度。任何宽度或高度都必须与 ImageView 的宽度或高度相同。
下面的代码行用于应用 FIT_START ScaleType:
android:scaleType="fitStart"
输出将如下所示:
在上图中,图像在 ImageView 的左侧进行了缩放。
FIT_END
FIT_END ScaleType 用于将图像放置在 ImageView 的最右下方,并通过保持纵横比统一缩放图像,并且不会对图像进行裁剪。图像的宽度和高度根据图像的大小按比例缩小或放大。所以基本上缩放完成,直到图像的宽度和高度都小于 ImageView 的宽度和高度。任何宽度或高度都必须与 ImageView 的宽度或高度相同。
下面的代码行用于应用 FIT_START ScaleType:
android:scaleType="fitEnd"
输出将如下所示:
在上图中,图像被缩放到 ImageView 的右侧。
FIT_XY
FIT_XY ScaleType 用于在整个 ImageView 中缩放图像。此处不保留图像的纵横比。图片的宽高与ImageView的宽高一致。
下面的代码行用于应用 FIT_XY ScaleType:
android:scaleType="fitXY"
输出将如下所示:
在上图中,图像被缩放以适应 ImageView 的宽度和高度。所以,图片的宽高和ImageView的一样。
MATRIX
MATRIX ScaleType 用于根据一些用户定义的 MATRIX 对图像进行缩放。基本上,我们在绘制一些图形时使用矩阵来操作画布。因此,当使用带有 ImageView 的 Matrix 时,您可以使用它来翻转、旋转、平移等图像。
下面的代码行用于应用 FIT_START ScaleType:
android:scaleType="matrix"
输出将如下所示:
结论
在这篇博客中,我们了解了可以在 ImageView 中使用的所有 ScaleType。您可以通过使用不同大小的图像以及使用不同大小的 ImageView 来进行更多实验。
作者:Sumit Mishra
链接:https://blog.mindorks.com/imageview-scaletype-in-android
网友评论