Android Load Image Using Fresco

July 10, 2019

Android Image Loading Library

  • Fresco by Facebook, last release in July 4, 2019
  • Glide by Google, last release in Feb 15, 2019
  • Picasso - last release in May 8, 2018

Dependencies

dependencies {
  // your app's other dependencies
  implementation 'com.facebook.fresco:fresco:2.0.0'
}

NOTE: Optional packages for animated gif, webp, etc.

Initialize

class LuaApp: Application() {

    override fun onCreate() {
        super.onCreate()
        Fresco.initialize(this)
    }
}

SimpleDraweeView as ImageView

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    >

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/draweeView"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_gravity="center"
        fresco:placeholderImage="@drawable/img_placeholder_300dp"
        />
</FrameLayout>

NOTE: Full list of SimpleDraweeView XML attributes.

Load Image

Resouce ID

val uri = UriUtil.getUriForResourceId(R.drawable.sample_image)
draweeView.setImageURI(uri)

By URL

val uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/master/docs/static/logo.png")
draweeView.setImageURI(uri)

WebP support

WebP support is enabled by default on Android 4.0 (API level 14), while lossless and transparent WebP images are supported in Android 4.3 (API level 18), same as Android WebP Support.

To use WebP on older version, include the following.

dependencies {
  implementation 'com.facebook.fresco:webpsupport:2.0.0'
}

Proguard

Since Fresco 1.9.0 a ProGuard configuration file is included in Fresco itself which is automatically applied if you enable ProGuard for your app.

References:

This work is licensed under a
Creative Commons Attribution-NonCommercial 4.0 International License.