Skip to content

Instantly share code, notes, and snippets.

View cbeyls's full-sized avatar

Christophe Beyls cbeyls

View GitHub Profile
@cbeyls
cbeyls / SafeLoadersFragmentActivity.java
Last active April 27, 2019 12:16
Activity to restore the safe Loaders behavior of support libraries < 24.0.0 in recent versions
package android.support.v4.app;
/**
* Inherit from this class to prevent Loaders from being forcefully retained during a configuration change.
* Forceful retain currently causes all stopped Loaders to briefly start, causing unexpected issues for detached fragments.
* This restores the Loaders behavior of support libraries < 24.0.0
*
* @author Christophe Beyls
* @see <a href="https://issuetracker.google.com/issues/37916599">Bug report</a>
*/
@cbeyls
cbeyls / LifecycleLoader.java
Last active May 19, 2017 01:28
Lifecycle-aware Loader delivering results from a LiveData source
package be.digitalia.common.loaders;
import android.arch.lifecycle.Lifecycle;
import android.arch.lifecycle.LifecycleOwner;
import android.arch.lifecycle.LifecycleRegistry;
import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.Observer;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@cbeyls
cbeyls / SafeCoordinatorLayout.java
Last active February 22, 2017 14:13
CoordinatorLayout properly restoring the Behavior states on API < 13 by avoiding null ClassLoaders
package be.digitalia.common.widgets;
import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.design.widget.CoordinatorLayout;
import android.support.v4.os.ParcelableCompat;
import android.support.v4.os.ParcelableCompatCreatorCallbacks;
import android.util.AttributeSet;
@cbeyls
cbeyls / MultiChoiceHelper.java
Last active October 28, 2024 18:23
Helper class to reproduce ListView's modal MultiChoice mode with a RecyclerView. Compatible with API 7+.
package be.digitalia.common.widgets;
import android.content.Context;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.v4.util.LongSparseArray;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.ActionMode;
@cbeyls
cbeyls / RecyclerViewCursorAdapter.java
Last active April 19, 2018 20:24
Simplified CursorAdapter designed for RecyclerView
package be.digitalia.common.adapters;
import android.database.Cursor;
import android.support.v7.widget.RecyclerView;
/**
* Simplified CursorAdapter designed for RecyclerView.
*
* @author Christophe Beyls
*/
@cbeyls
cbeyls / ContentLoadingProgressBar.java
Last active December 20, 2021 22:16
ContentLoadingProgressBar implemented The Right Way™
package be.digitalia.common.widgets;
import android.content.Context;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ProgressBar;
/**
* ContentLoadingProgressBar implements a ProgressBar that waits a minimum time to be
@cbeyls
cbeyls / AdapterLinearLayout.java
Last active May 11, 2020 08:57
Vertical LinearLayout populated by a special adapter. Can be used as a lightweight ListView.
package be.digitalia.common.widgets;
import android.content.Context;
import android.database.DataSetObservable;
import android.database.DataSetObserver;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
@cbeyls
cbeyls / textpattern.rb
Created April 21, 2015 18:44
TextPattern import plugin for Jekyll that uses a YAML dump file of the "Textpattern" table from PHPMyAdmin instead of a local database. It also imports categories in addition to tags.
module JekyllImport
module Importers
class TextPattern < Importer
def self.require_deps
JekyllImport.require_with_fallback(%w[
rubygems
fileutils
safe_yaml
])
end
@cbeyls
cbeyls / PicassoImageLoader.java
Created March 30, 2015 23:06
ImageLoader implementation for my own fork of the Cast Companion Library using the Picasso library. See: https://github.com/cbeyls/CastCompanionLibrary-android
package com.google.sample.castcompanionlibrary.cast.imageloader;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
@cbeyls
cbeyls / RefreshProgressBar.java
Last active January 1, 2019 14:37
A custom horizontal indeterminate progress bar which displays a smooth colored animation. (Google Now progress bar)
package android.support.v4.widget;
import android.content.Context;
import android.graphics.Canvas;
import android.os.Handler;
import android.support.annotation.ColorInt;
import android.support.annotation.ColorRes;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;