とっても簡単です。
 Glide V4というライブラリを利用すると、画像を非同期でダウンロードしてimageViewに表示させたり、キャッシュさせて再び画像を表示したりできる。画面の縦横回転時ににアクティビティが再生成されても画像をキャッシュしているので、特別な処理をしなくてもいいので便利。
 キャッシュにはメモリキャッシュとハードディスク(フラッシュROM)へのキャッシュを使い分けることができる。
 また、画像も中央クロップにしたり、読み込み中画像を表示させたり、画像が読み込めませんでした画像を表示させたりと多機能である。
 使い方もとっても簡単だ。
 なお、GlideはV3とV4ではオプション設定のやり方が変わっている。V3ではメソッドチェーンで様々なオプションを設定していたが、V4では別に設定情報を保存したクラスを生成する必要がある。V4をV3のように使用するにはGlideAppというライブラリを生成する必要があるが、これは旧バージョンとの互換性のために必要なものなので、今後はV4方式のやり方でやっていくといいだろう。従って、ここではGlideAppについては取り上げない。
 まずはおきまりのライブラリの読み込みとネットワークへのアクセス許可を設定する。

//GradleのほうにGlide V4の設定をする
implementation 'com.github.bumptech.glide:glide:4.7.1'
//マニフェストのほうにネットワークの通信許可を記述する <uses-permission android:name="android.permission.INTERNET" />
 まずはオプションを設定して、あとはimageViewがあるアクティビティ(またはFragment)を指定し、アクセスするURLと表示されるUI部品を指定するだけ。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

//ボタンを押すと画像をダウンロードしてimageViewに表示させる
btnButton01.setOnClickListener {

//ダウンロードするURL フリー素材提供サイトの画像です val url = "https://www.pakutaso.com/shared/img/thumb/nuko-8_TP_V1.jpg"

//あらかじめ表示オプションを指定しておく val option: RequestOptions = RequestOptions().let {
//ここでキャッシュの有無、ローディング中の画像、画像サイズなどを指定できる it.fitCenter() }
//withでimageViewがあるActivityかFragmentを指定する
//loadで画像のダウンロード先を指定する
//intoで表示させるimageViewを指定する
Glide.with(this).load(url).apply(option).into(ivImageView01) } }