I need to display the list of images from api in the list page. For that i used two approaches.
First Approach:
By converting the url to byte array
There is a library named Picasso. which can efficiently load images from url. it can also load image from the File. all you wanted to do , write a line of code.
example
Picasso.with(context) //Context
.load("http://i.imgur.com/DvpvklR.png") //URL/FILE
.into(imageView)//an ImageView Object to show the loaded image;
It can also cache your image, so the loaded image could be able to load faster on the next time without wasting the data.
There are many more options available in Picasso. Here is the documentation
If you need rounded cornered bitmap
Picasso.with(mContext)
.load("your-image-url-or-file-or-drawable")
.transform(new RoundedTransformation(200, 0))
.fit()
.into(imageView);
RoundedTransformation.java
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Shader;
// enables hardware accelerated rounded corners
// original idea here : http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/
public class RoundedTransformation implements com.squareup.picasso.Transformation {
private final int radius;
private final int margin; // dp
// radius is corner radii in dp
// margin is the board in dp
public RoundedTransformation(final int radius, final int margin) {
this.radius = radius;
this.margin = margin;
}
@Override
public Bitmap transform(final Bitmap source) {
final Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(new BitmapShader(source, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
canvas.drawRoundRect(new RectF(margin, margin, source.getWidth() - margin, source.getHeight() - margin), radius, radius, paint);
if (source != output) {
source.recycle();
}
return output;
}
@Override
public String key() {
return "rounded";
}
}