Glide使用及说明

Glide是一款Google推荐的图片加载库,它功能强大,我们不但可以通过他来加载本地存储的图片,还可以加载网络上或者是Uri路径的图片。除了加载图片之外,我们还可以通

过他来加载GIF图片和本地的Video。在加载图片之后我们还可以他来设置图片的大小,图片缓存,图片的显示动画还有缩略图等等。总之作为一款图片加载库Glide是非常优秀

的。说了这么多下面就让我们看看他是怎么用的吧。

一、加载一个图片资源(这里的资源可以是一个URL地址、也可以是系统的资源如drawable和mipmap里的资源、也可以是本地系统文件里的、抑或是一个Uri)

示例代码

image = (ImageView) findViewById(R.id.image);
        Glide.with(this)//参数为context
                .load(url)//加载的图片资源
                .into(image);//将要显示图片的控件

效果(其实没什么效果,就是显示一张图片)


二、关于使用图片占位符

一个是未加载完成使用的占位符(placeHolder()),另一个是加载错误使用的占位符(error()

Glide.with(this)
                .load(url)
                .placeholder(R.mipmap.ic_launcher)
                .error(R.drawable.ic_error)
                .into(image);

三、关于图片的大小调整(override(x,y))和缩放(有两个centerCrop和fitCenter)

override会将图片设置为设置的大小,然后会去填充显示的控件

centerCrop他是一种裁剪技术,通过缩放图片让他填充到ImageView的界内并且裁剪额外的部分,imageView可能会完全填充但是图像可能不会完整显示

fitCenter他是将图片缩放来完全显示在控件内

Glide.with(this)
                .load(url)
                .placeholder(R.mipmap.ic_launcher)
                .error(R.drawable.ic_error)
                .override(200, 300)
                .centerCrop()
                .into(image);
Glide.with(this)
                .load(url)
                .placeholder(R.mipmap.ic_launcher)
                .error(R.drawable.ic_error)
                .override(200, 300)
                .fitCenter()
                .into(image);
三、显示gif和本地视频资源(这个和显示图片的资源的方法基本是一样的都是通过load()方法)


四、缓存

Glide框架会进行两步缓存(内存缓存和磁盘缓存),不过你可以通过skipMemoryCache(true)来避免内存缓存,但是这样他还是会进行内存缓存,因为他要避免重复的网络请

求,当然你还是可以阻止磁盘缓存的,通过diskCacheStrategy(_)来设置是否磁盘缓存,这里的参数是一个枚举值,包含四个值

DiskCacheStrategy.NONE 什么都不缓存

DiskCacheStrategy.SOURCY只缓存原来的全分辨率图像(即原图)

DiskCacheStrategy.RESULT 缓存当前你显示的图像(即变化过后的图片)

DiskCacheStrategy.ALL 缓存所有图片

五、图像显示的优先级

当你需要同时显示多张图片时(比如一个网络相册),可能页面的顶部用来显示一张封面的的图片,下面用来显示相册内容图片,这个时候你可能就要让第一张图片能够先显示

出来,这时你可以用priority(_)来设置,这里有四个权限,从低到高依次是

Priority.LOW,Priority.NORMAL,Priority.HIGH,Priority.IMMEDIATE


<think>好的,用户想了解在Android中使用Glide库实现fitXY图片缩放的方法,并且需要示例。首先,我需要回忆Glide的相关知识,特别是关于图片缩放的部分。记得Glide提供了多种图片缩放选项,类似于Android ImageView的scaleType属性。用户提到的fitXY应该对应Glide中的某个选项,但具体是哪个呢? 接下来,我需要确认Glide中如何设置scaleType。根据之前的知识,Glide的transform方法可以用来应用各种变换,比如CenterCrop、FitCenter等。但直接设置scaleType可能不是通过transform,而是通过override方法指定目标尺寸,再结合缩放类型。或者,可能需要在ImageView上直接设置scaleType为fitXY,同时确保Glide加载的图片适配这个设置。 然后,用户提供的引用中有提到引用[1]使用android:scaleType="fitXY"来拉伸图片,但这是在ImageView的XML属性中设置的。可能用户想知道如何在Glide中实现同样的效果。这时候需要考虑Glide是否支持强制图片拉伸填充,而不保持宽高比。通常,Glide的默认行为可能不是fitXY,而是类似centerCrop或fitCenter,所以需要找到对应的选项。 另外,引用[3]提到基于Glide的二次封装,可能涉及到自定义的缩放方式,但用户需要的是原生Glide的方法。需要确保回答中使用的是Glide本身的API,而不是二次封装的库。 可能正确的做法是,使用Glide的override方法指定目标尺寸,然后使用dontTransform()来避免Glide自动应用变换,这样ImageView的scaleType设置就能生效。或者,使用fitCenter()或centerCrop(),但这些可能不符合fitXY的需求。但fitXY是拉伸填满,可能需要在ImageView上设置scaleType,并确保Glide不进行任何变换,让图片直接适应ImageView的尺寸。 需要验证这种方法的正确性。例如,在XML中设置ImageView的scaleType为fitXY,然后使用Glide加载图片时不应用任何变换,这样图片应该会被拉伸填充。可能还需要使用override指定具体的宽高,或者让Glide根据ImageView的尺寸自动调整。 因此,正确的步骤可能包括:1. 在ImageView的XML中设置android:scaleType="fitXY";2. 在Glide加载时使用override指定目标尺寸,或者确保Glide不应用任何变换。可能需要使用dontTransform()方法,因为Glide默认可能会应用某些变换。 另外,需要提供一个代码示例,展示如何在Glide中实现这一点。例如: Glide.with(context) .load(imageUrl) .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) .dontTransform() .into(imageView); 但这样可能不会拉伸,而是保持原图大小。或者,可能需要设置override为ImageView的尺寸,并配合fitXY的scaleType。比如: Glide.with(context) .load(imageUrl) .override(imageView.width, imageView.height) .dontTransform() .into(imageView); 但获取ImageView的宽高可能在加载时尚未确定,导致问题。因此,可能更可靠的方式是直接在XML中设置ImageView的scaleType为fitXY,并且让Glide加载时不进行变换,这样ImageView会自动处理拉伸。例如: XML: <ImageView android:id="@+id/image_view" android:layout_width="200dp" android:layout_height="100dp" android:scaleType="fitXY"/> Java代码: Glide.with(context) .load(imageUrl) .dontTransform() .into(imageView); 这样,Glide不会应用任何变换,而ImageView会根据设置的fitXY进行拉伸填充。但需要确认Glide默认是否会调整图片尺寸以适应ImageView。如果Glide默认调整大小,可能需要使用override,或者可能不需要,因为ImageView的scaleType已经处理了拉伸。 另外,可能还需要注意图片的缩放质量,使用diskCacheStrategy或其他方法来优化显示效果。但用户主要关心的是如何实现fitXY,所以示例应简洁明了。 最后,根据引用[1],用户可能已经知道在XML中设置scaleType,但需要Glide配合正确加载,确保图片被正确拉伸。因此,回答应强调两者的结合使用ImageView的scaleType设置和Glide的dontTransform方法,或者适当的override。</think>### 如何在Android中使用Glide实现`fitXY`图片缩放? 在Android中,Glide默认会根据`ImageView`的`scaleType`属性自动处理图片缩放。若需要实现类似`fitXY`的拉伸填充效果,需结合`ImageView`的XML属性设置和Glide的配置。以下是具体步骤和示例: --- #### **步骤说明** 1. **在XML中定义ImageView的`scaleType`** 设置`android:scaleType="fitXY"`,强制图片拉伸填充控件区域,忽略原始宽高比: ```xml <ImageView android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="200dp" android:scaleType="fitXY" /> ``` 2. **在Glide中禁用默认变换** 使用`dontTransform()`方法阻止Glide自动应用`FitCenter`或`CenterCrop`等默认变换,确保`ImageView`的`fitXY`生效: ```kotlin Glide.with(context) .load(imageUrl) .dontTransform() // 禁用Glide的自动变换 .into(imageView) ``` 3. **(可选)指定加载尺寸** 若需更精确控制,可用`override(width, height)`强制设置加载尺寸: ```kotlin Glide.with(context) .load(imageUrl) .override(300, 200) // 指定目标宽高 .dontTransform() .into(imageView) ``` --- #### **注意事项** - **图片变形问题**:`fitXY`会拉伸图片,可能导致宽高比失调,需根据场景权衡[^1]。 - **性能优化**:频繁拉伸大图可能影响性能,建议结合`thumbnail()`加载缩略图或压缩图片尺寸[^2]。 --- #### **完整示例** ```kotlin // XML布局 <ImageView android:id="@+id/stretched_image" android:layout_width="match_parent" android:layout_height="150dp" android:scaleType="fitXY" /> // Kotlin代码 val imageView: ImageView = findViewById(R.id.stretched_image) Glide.with(this) .load("https://example.com/image.jpg") .dontTransform() .into(imageView) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值