package jp.wasabeef.example.picasso;
import android.content.Context;
import android.graphics.Color;
import android.graphics.PointF;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List;
import jp.wasabeef.picasso.transformations.BlurTransformation;
import jp.wasabeef.picasso.transformations.ColorFilterTransformation;
import jp.wasabeef.picasso.transformations.CropCircleTransformation;
import jp.wasabeef.picasso.transformations.CropSquareTransformation;
import jp.wasabeef.picasso.transformations.CropTransformation;
import jp.wasabeef.picasso.transformations.GrayscaleTransformation;
import jp.wasabeef.picasso.transformations.MaskTransformation;
import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
import jp.wasabeef.picasso.transformations.gpu.BrightnessFilterTransformation;
import jp.wasabeef.picasso.transformations.gpu.ContrastFilterTransformation;
import jp.wasabeef.picasso.transformations.gpu.InvertFilterTransformation;
import jp.wasabeef.picasso.transformations.gpu.KuwaharaFilterTransformation;
import jp.wasabeef.picasso.transformations.gpu.PixelationFilterTransformation;
import jp.wasabeef.picasso.transformations.gpu.SepiaFilterTransformation;
import jp.wasabeef.picasso.transformations.gpu.SketchFilterTransformation;
import jp.wasabeef.picasso.transformations.gpu.SwirlFilterTransformation;
import jp.wasabeef.picasso.transformations.gpu.ToonFilterTransformation;
import jp.wasabeef.picasso.transformations.gpu.VignetteFilterTransformation;
/**
* Created by Wasabeef on 2015/01/11.
*/
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.ViewHolder> {
private Context mContext;
private List<Type> mDataSet;
enum Type {
Mask,
NinePatchMask,
CropLeftTop,
CropLeftCenter,
CropLeftBottom,
CropCenterTop,
CropCenterCenter,
CropCenterBottom,
CropRightTop,
CropRightCenter,
CropRightBottom,
CropSquareCenterCenter,
Crop169CenterCenter,
Crop43CenterCenter,
Crop31CenterCenter,
Crop31CenterTop,
CropQuarterCenterCenter,
CropQuarterCenterTop,
CropQuarterBottomRight,
CropHalfWidth43CenterCenter,
CropSquare,
CropCircle,
ColorFilter,
Grayscale,
RoundedCorners,
Blur,
Toon,
Sepia,
Contrast,
Invert,
Pixel,
Sketch,
Swirl,
Brightness,
Kuawahara,
Vignette
}
public MainAdapter(Context context, List<Type> dataSet) {
mContext = context;
mDataSet = dataSet;
}
@Override public MainAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(mContext).inflate(R.layout.layout_list_item, parent, false);
return new ViewHolder(v);
}
@Override public void onBindViewHolder(MainAdapter.ViewHolder holder, int position) {
switch (mDataSet.get(position)) {
case Mask: {
int width = Utils.dip2px(mContext, 133.33f);
int height = Utils.dip2px(mContext, 126.33f);
Picasso.with(mContext)
.load(R.drawable.check)
.resize(width, height)
.centerCrop()
.transform((new MaskTransformation(mContext, R.drawable.mask_starfish)))
.into(holder.image);
break;
}
case NinePatchMask: {
int width = Utils.dip2px(mContext, 150.0f);
int height = Utils.dip2px(mContext, 100.0f);
Picasso.with(mContext)
.load(R.drawable.check)
.resize(width, height)
.centerCrop()
.transform(new MaskTransformation(mContext, R.drawable.chat_me_mask))
.into(holder.image);
break;
}
case CropLeftTop:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(300, 100, CropTransformation.GravityHorizontal.LEFT,
CropTransformation.GravityVertical.TOP))
.into(holder.image);
break;
case CropLeftCenter:
Picasso.with(mContext).load(R.drawable.demo)
// 300, 100, CropTransformation.GravityHorizontal.LEFT, CropTransformation.GravityVertical.CENTER))
.transform(new CropTransformation(300, 100)).into(holder.image);
break;
case CropLeftBottom:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(300, 100, CropTransformation.GravityHorizontal.LEFT,
CropTransformation.GravityVertical.BOTTOM))
.into(holder.image);
break;
case CropCenterTop:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(300, 100, CropTransformation.GravityHorizontal.CENTER,
CropTransformation.GravityVertical.TOP))
.into(holder.image);
break;
case CropCenterCenter:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(300, 100))
.into(holder.image);
break;
case CropCenterBottom:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(300, 100, CropTransformation.GravityHorizontal.CENTER,
CropTransformation.GravityVertical.BOTTOM))
.into(holder.image);
break;
case CropRightTop:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(300, 100, CropTransformation.GravityHorizontal.RIGHT,
CropTransformation.GravityVertical.TOP))
.into(holder.image);
break;
case CropRightCenter:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(300, 100, CropTransformation.GravityHorizontal.RIGHT,
CropTransformation.GravityVertical.CENTER))
.into(holder.image);
break;
case CropRightBottom:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(300, 100, CropTransformation.GravityHorizontal.RIGHT,
CropTransformation.GravityVertical.BOTTOM))
.into(holder.image);
break;
case Crop169CenterCenter:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation((float) 16 / (float) 9,
CropTransformation.GravityHorizontal.CENTER,
CropTransformation.GravityVertical.CENTER))
.into(holder.image);
break;
case Crop43CenterCenter:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation((float) 4 / (float) 3,
CropTransformation.GravityHorizontal.CENTER,
CropTransformation.GravityVertical.CENTER))
.into(holder.image);
break;
case Crop31CenterCenter:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(3, CropTransformation.GravityHorizontal.CENTER,
CropTransformation.GravityVertical.CENTER))
.into(holder.image);
break;
case Crop31CenterTop:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(3, CropTransformation.GravityHorizontal.CENTER,
CropTransformation.GravityVertical.TOP))
.into(holder.image);
break;
case CropSquareCenterCenter:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation(1, CropTransformation.GravityHorizontal.CENTER,
CropTransformation.GravityVertical.CENTER))
.into(holder.image);
break;
case CropQuarterCenterCenter:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation((float) 0.5, (float) 0.5,
CropTransformation.GravityHorizontal.CENTER,
CropTransformation.GravityVertical.CENTER))
.into(holder.image);
break;
case CropQuarterCenterTop:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation((float) 0.5, (float) 0.5,
CropTransformation.GravityHorizontal.CENTER,
CropTransformation.GravityVertical.TOP))
.into(holder.image);
break;
case CropQuarterBottomRight:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation((float) 0.5, (float) 0.5,
CropTransformation.GravityHorizontal.RIGHT,
CropTransformation.GravityVertical.BOTTOM))
.into(holder.image);
break;
case CropHalfWidth43CenterCenter:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropTransformation((float) 0.5, 0, (float) 4 / (float) 3,
CropTransformation.GravityHorizontal.CENTER,
CropTransformation.GravityVertical.CENTER))
.into(holder.image);
break;
case CropSquare:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropSquareTransformation())
.into(holder.image);
break;
case CropCircle:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new CropCircleTransformation())
.into(holder.image);
break;
case ColorFilter:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new ColorFilterTransformation(Color.argb(80, 255, 0, 0)))
.into(holder.image);
break;
case Grayscale:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new GrayscaleTransformation())
.into(holder.image);
break;
case RoundedCorners:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new RoundedCornersTransformation(30, 0,
RoundedCornersTransformation.CornerType.BOTTOM_LEFT))
.into(holder.image);
break;
case Blur:
Picasso.with(mContext)
.load(R.drawable.check)
.transform(new BlurTransformation(mContext, 25, 1))
.into(holder.image);
break;
case Toon:
Picasso.with(mContext)
.load(R.drawable.demo)
.transform(new ToonFilterTransformation(mContext))
.into(holder.image);
break;
case Sepia:
Picasso.with(mContext)
.load(R.drawable.check)
.transform(new SepiaFilterTransformation(mContext))
.into(holder.image);
break;
case Contrast:
Picasso.with(mContext)
.load(R.drawable.check)
.transform(new ContrastFilterTransformation(mContext, 2.0f))
.into(holder.image);
break;
case Invert:
Picasso.with(mContext)
.load(R.drawable.check)
.transform(new InvertFilterTransformation(mContext))
.into(holder.image);
break;
case Pixel:
Picasso.with(mContext)
.load(R.drawable.check)
.transform(new PixelationFilterTransformation(mContext, 20))
.into(holder.image);
break;
case Sketch:
Picasso.with(mContext)
.load(R.drawable.check)
.transform(new SketchFilterTransformation(mContext))
.into(holder.image);
break;
case Swirl:
Picasso.with(mContext)
.load(R.drawable.check)
.transform(new SwirlFilterTransformation(mContext, 0.5f, 1.0f, new PointF(0.5f, 0.5f)))
.into(holder.image);
break;
case Brightness:
Picasso.with(mContext)
.load(R.drawable.check)
.transform(new BrightnessFilterTransformation(mContext, 0.5f))
.into(holder.image);
break;
case Kuawahara:
Picasso.with(mContext)
.load(R.drawable.check)
.transform(new KuwaharaFilterTransformation(mContext, 25))
.into(holder.image);
break;
case Vignette:
Picasso.with(mContext)
.load(R.drawable.check)
.transform(new VignetteFilterTransformation(mContext, new PointF(0.5f, 0.5f),
new float[] { 0.0f, 0.0f, 0.0f }, 0f, 0.75f))
.into(holder.image);
break;
}
holder.title.setText(mDataSet.get(position).name());
}
@Override public int getItemCount() {
return mDataSet.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView image;
public TextView title;
ViewHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.image);
title = (TextView) itemView.findViewById(R.id.title);
}
}
}