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