package com.twistedequations.crossbow_test;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.VolleyError;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.crossbow.volley.CrossbowImage;
import com.crossbow.volley.toolbox.Crossbow;
import com.squareup.picasso.Picasso;
import com.twistedequations.crossbow_test.api.GithubService;
import com.twistedequations.crossbow_test.api.RequestRepos;
import java.util.List;
import java.util.Locale;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.Response;
/**
* Created by Patrick on 07/07/2015.
*/
public class ActivityComapreLibs extends AppCompatActivity {
@Bind(R.id.load_stats)
TextView loadStats;
@Bind(R.id.load_data)
TextView loadData;
@Bind(R.id.imageview)
ImageView imageView;
private long start;
private RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.github.com")
.build();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_compare_libs);
ButterKnife.bind(this);
}
@OnClick({R.id.load_crossbow, R.id.load_retofit, R.id.load_pisacco, R.id.load_glide, R.id.load_crossbow_image})
public void ocClick(View view) {
start = System.currentTimeMillis();
switch (view.getId()) {
case R.id.load_crossbow:
showData();
loadCrossbow();
break;
case R.id.load_retofit:
showData();
loadRetrofit();
break;
case R.id.load_pisacco:
showImage();
loadPissaco();
break;
case R.id.load_glide:
showImage();
loadGlide();
break;
case R.id.load_crossbow_image:
showImage();
loadCrossBowImage();
break;
}
}
private void showStats() {
long timeTaken = System.currentTimeMillis() - start;
loadStats.setText(String.format(Locale.ENGLISH, "Load took %d ms", timeTaken));
}
private void showToast() {
Toast.makeText(this, "Error Loading", Toast.LENGTH_SHORT).show();
}
private void showImage() {
imageView.setVisibility(View.VISIBLE);
loadData.setVisibility(View.GONE);
}
private void showData() {
imageView.setVisibility(View.GONE);
loadData.setVisibility(View.VISIBLE);
}
private void loadRetrofit() {
GithubService service = restAdapter.create(GithubService.class);
service.listRepos(new Callback<List<Repo>>() {
@Override
public void success(List<Repo> repo, Response response) {
loadData.setText(repo.toString());
showStats();
}
@Override
public void failure(RetrofitError error) {
showToast();
}
});
}
private void loadCrossbow() {
RequestRepos requestRepos = new RequestRepos("https://api.github.com/users/twistedequations/repos", new com.android.volley.Response.Listener<List<Repo>>() {
@Override
public void onResponse(List<Repo> response) {
showStats();
loadData.setText(response.toString());
}
}, new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
showToast();
}
});
Crossbow.get(this).async(requestRepos);
}
private void loadCrossBowImage() {
Crossbow.get(this).loadImage().source("http://i.imgur.com/ByktT4N.jpg").centerCrop().listen(new CrossbowImage.Listener() {
@Override
public void onLoad(boolean success, boolean fromCache, Bitmap bitmap, ImageView imageView) {
if (success) {
showStats();
}
else {
showToast();
}
}
}).into(imageView).load();
}
private void loadPissaco() {
Picasso.with(this).load("http://i.imgur.com/ByktT4N.jpg").noFade().into(imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
showStats();
}
@Override
public void onError() {
showToast();
}
});
}
private void loadGlide() {
Glide.with(this).load("http://i.imgur.com/ByktT4N.jpg").listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
showToast();
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
showStats();
return false;
}
}).into(imageView);
}
}