Skip to content

Instantly share code, notes, and snippets.

@Anrimian
Anrimian / DefaultErrorConverter.java
Last active November 5, 2017 16:25
RetrofitRxJava2ErrorAdapter
public class DefaultErrorConverter implements ErrorConverter {
@NonNull
@Override
public Exception processServerError(HttpException httpException) {
ResponseBody body = httpException.response().errorBody();
Gson gson = new Gson();
TypeAdapter adapter = gson.getAdapter(ErrorResponse.class);//your error response class
try {
@Anrimian
Anrimian / CancelFunction.java
Last active October 9, 2017 11:56
Third-party services wrapper, for example social networks authorization
public interface CancelFunction<T> {
void onCancel(T data);
}
@Anrimian
Anrimian / BroadcastDisposable.java
Created October 9, 2017 11:59
Simple RxJava2 wrapper for Android BroadcastReceiver
class BroadcastDisposable implements Disposable {
private BroadcastReceiver receiver;
private Context ctx;
private boolean isDisposed = false;
BroadcastDisposable(@NonNull BroadcastReceiver receiver, @NonNull Context ctx) {
this.receiver = receiver;
this.ctx = ctx;
@Anrimian
Anrimian / TransitionsBuilder.java
Last active October 12, 2017 14:39
Helper class to simplify building transitions
import android.app.Activity;
import android.os.Build;
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.util.Pair;
import android.util.Log;
import android.view.View;
public class EndlessPagerAdapter extends PagerAdapter {
private PagerAdapter adapter;
public EndlessPagerAdapter(PagerAdapter adapter, ViewPager viewPager) {
this.adapter = adapter;
viewPager.addOnPageChangeListener(new SwapPageListener(viewPager));
}
@Override
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.CoordinatorLayout;
import android.util.AttributeSet;
import android.view.View;
/**
public class BoundServiceWrapper<T extends IBinder> {
private Context context;
private Class serviceClass;
private int serviceFlags;
private T binder;
private Action<T> deferAction;
public BoundServiceWrapper(Context context, Class serviceClass, int serviceFlags) {
this.context = context;
public enum Field {
SOMETHING
}
@SuppressWarnings("WeakerAccess")
public class AndroidUtils {
public static int getColorFromAttr(Context ctx, int attributeId) {
int colorId = getResourceIdFromAttr(ctx, attributeId);
return ContextCompat.getColor(ctx, colorId);
}
public static int dpToPx(int dp, Context ctx) {
public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior {
private static final int TRANSLATE_HIDE_DURATION_MILLIS = 200;
private static final int TRANSLATE_SHOW_DURATION_MILLIS = 170;
private Animator hideAnimator;
private Animator showAnimator;
public ScrollAwareFABBehavior(Context context, AttributeSet attrs) {