(Tutorial Android) Image Loader using Picasso

Tuesday, May 17, 2016

Ada beberapa library image loader android yang perlu kita kenal, salah satunya adalah Picasso. Picasso merupakan library yang banyak digunakan sebagai image downloading dan caching, dibuat dan dikembangkan oleh Square.

Picasso dalam memuat dan menampilkan gambar dari berbagai sumber (lokal maupun url) dengan caching dan memori yang rendah.

Picasso memiliki beberapa kelebihan diantaranya :
- Mengatur proses loading gambar secara otomatis dan menampilkannya pada screen.
- Secara otomatis mengatur memory dan disk caching, jadi kita tidak perlu pusing mengatur cachenya.
- Transformasi image yang komplek dengan penggunaan memori yang minimal.

Library ini merupakan salah satu library favorit saya yang biasa saya gunakan diberbagai project-project Android.

Kali ini kita akan mencoba bagaimana mengimplementasikan library ini.
Mula-mulai kita siapkan dulu sampel image yang akan kita coba, misalnya foto lucu dari dedek JKT48 satu ini hehe..



Ok lanjut..

Pertama, tambahkan dependencies Picasso ke gradle. Versi yang saya uji coba ini adalah versi 2.5.2.
Untuk versi terakhir bisa dilihat di http://square.github.io/picasso/

compile 'com.squareup.picasso:picasso:2.5.2'

Setelah itu kita akan coba menampilkan image dari 2 source, dari local dan url.

Buat layout yang terdiri dari 2 imageView berikut :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.wim.android_picasso.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:weightSum="1">

        <ImageView
            android:id="@+id/imgUrl"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:scaleType="centerCrop"
            android:layout_weight="0.5"/>

        <ImageView
            android:id="@+id/imgLocal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:scaleType="centerCrop"
            android:layout_weight="0.5"/>

    </LinearLayout>
</RelativeLayout>


Selanjutnya adalah penggunaan Picasso di MainActivity. Sangat simpel, yaitu dengan satu baris kode saja. Bentuk umumnya seperti ini :
Picasso.with(context).load("http://....").into(imageView);
Source image yang akan ditampilkan dimasukkan ke method load(), kemudian menampilkannya ke imageview dengan method into().
Contohnya :
1. Menampilkan image dari local(drawable)
Picasso.with(getApplicationContext()).load(R.drawable.yupi).into(imgLocal);
2. Menampilkan image dari url + transformasi
// load image from URL
Picasso.with(getApplicationContext())
        .load("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDzQyz9AIM-pF3Gw8WYbx07QWjxONvmDvaiBh_8ROX5kzq9RGcPxoaJh_t3t1mO2WHQVaNZHIIFLs02XsUYcPcIzFUz84tN2cy0QiTsX4UB-yTIjHV3Z_lM2NL1o93EuvmZwALVnYcqbA/s1600/13102516_264907107197324_1288967016_n.jpg")
        .placeholder(R.drawable.placeholder)
        .resize(800, 800)
        .centerCrop()
        .into(imgUrl);
Nah, pada contoh yang ke-2 disini saya mencoba transformasi image dengan mengatur resizenya jadi 800 dan center crop serta menambahkan placeholder ketika loading.

Berikut source code lengkap di MainActivity.
package com.example.wim.android_picasso;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

import com.squareup.picasso.Picasso;

public class MainActivity extends AppCompatActivity {

    private ImageView imgUrl, imgLocal;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imgUrl = (ImageView) findViewById(R.id.imgUrl);
        imgLocal = (ImageView) findViewById(R.id.imgLocal);

        // load image from URL
        Picasso.with(getApplicationContext())
                .load("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDzQyz9AIM-pF3Gw8WYbx07QWjxONvmDvaiBh_8ROX5kzq9RGcPxoaJh_t3t1mO2WHQVaNZHIIFLs02XsUYcPcIzFUz84tN2cy0QiTsX4UB-yTIjHV3Z_lM2NL1o93EuvmZwALVnYcqbA/s1600/13102516_264907107197324_1288967016_n.jpg")
                .placeholder(R.drawable.placeholder)
                .resize(800, 800)
                .centerCrop()
                .into(imgUrl);

        // load image
        Picasso.with(getApplicationContext())
                .load(R.drawable.yupi)
                .into(imgLocal);

    }
}


Terakhir jangan lupa tambahkan permission internet di AndroidManifest.
<uses-permission android:name="android.permission.INTERNET"/>

Build dan jalankan maka hasilnya seperti berikut :


Oke sekian dulu tutorial singkat kali ini..

Source code lengkapnya dapat di lihat di https://github.com/wimsonevel/Android-Picasso
Sekian dan semoga bermanfaat.
Happy Coding :)

Share this :

Previous
Next Post »
0 Komentar

Penulisan markup di komentar
  • Silakan tinggalkan komentar sesuai topik. Komentar yang menyertakan link aktif, iklan, atau sejenisnya akan dihapus.
  • Untuk menyisipkan kode gunakan <i rel="code"> kode yang akan disisipkan </i>
  • Untuk menyisipkan kode panjang gunakan <i rel="pre"> kode yang akan disisipkan </i>
  • Untuk menyisipkan quote gunakan <i rel="quote"> catatan anda </i>
  • Untuk menyisipkan gambar gunakan <i rel="image"> URL gambar </i>
  • Untuk menyisipkan video gunakan [iframe] URL embed video [/iframe]
  • Kemudian parse kode tersebut pada kotak di bawah ini
  • © 2015 Simple SEO ✔

Ads