Android Picasso Image Loader Library Example

In this post, I will tell you how to use Picasso Image Loader library for loading images fastly and efficiently it involves the use of cache memory.It is widely used as an image loader from URL.

Benefits of using Picasso Library:-

1.It is very easy and much simple to load images from url.

2.It uses caching thus providing rich user experience and loads images faster.

3. It takes care of memory use and save developers from Out of Memory Error.

Alternatives of Picasso:-

1.Glide(recommended by google)

2.Volley

So, Let’s Start

1.Open Eclipse or Android Studio -> New Project->Android Application Project-> Name of Application-> Follow all instructions and complete by clicking on Finish.

2. For Eclipse  download Picasso library jar from here.

3. For Android Studio use this dependency to use Picasso.

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

4. Now as we will be loading an image from server we will need the internet so add internet permission in AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>

5. Now create a layout containing ImageView to load images from the server.

activity.main_xml

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

   <ImageView
       android:id="@+id/topimage"
       android:layout_alignParentTop="true"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" />

</RelativeLayout>

6. Use Picasso like this

Picasso.with(context).load(url).into(imageview);

7. Use Picasso for image transformations like this

Picasso.with(context).load(url).
                resize(width,height).centerCrop().into(Imageview);

8. Create MainActivity.java to use this ImageView and load Image using Picasso

MainActivity.java

package com.coderzpassion.picassosample;

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

import com.squareup.picasso.Picasso;

public class MainActivity extends AppCompatActivity {

    ImageView top;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        top=(ImageView)findViewById(R.id.topimage);
        // loading image with picasso from server
       // Picasso.with(MainActivity.this).load("http://coderzpassion.com/wp-content/uploads/2016/03/coderzpassion.png").into(top);
        // image transformations with picasso
        Picasso.with(MainActivity.this).load("http://coderzpassion.com/wp-content/uploads/2016/03/coderzpassion.png").
                resize(700,700).centerCrop().into(top);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

9. AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.coderzpassion.picassosample" >
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Output

androidhowtousepicassoimageloaderlibrary            androidworkingwithpicasso