Skip to content

Instantly share code, notes, and snippets.

@hrules6872
hrules6872 / ImageCenteredSpan.java
Created February 19, 2015 11:55
Image Centered Span
class ImageCenteredSpan extends ImageSpan {
public ImageCenteredSpan(Drawable d) {
super(d);
}
@Override
public void draw(Canvas canvas, CharSequence text,
int start, int end, float x,
int top, int y, int bottom, Paint paint) {
Drawable b = getDrawable();
@hrules6872
hrules6872 / Log.java
Created February 25, 2015 11:41
Log
public class Log {
static final boolean isLoggable = BuildConfig.DEBUG;
static final String TAG = BuildConfig.APPLICATION_ID;
public static void i(String tag, String string) {
if (isLoggable) android.util.Log.i(tag, string);
}
public static void i(String string) {
if (isLoggable) android.util.Log.i(TAG, string);
@hrules6872
hrules6872 / PriceTagSpan.java
Created March 10, 2015 13:54
Price Tag TextView
import android.text.TextPaint;
import android.text.style.SuperscriptSpan;
public class PriceTagSpan extends SuperscriptSpan {
@Override
public void updateDrawState(TextPaint tp) {
tp.baselineShift += (int) (tp.ascent() * 0.33f);
}
@Override
@hrules6872
hrules6872 / CustomGenerateViewId.java
Created April 9, 2015 13:49
A backport of generateViewId() to API 10+
public class CustomGenerateViewId {
private static final AtomicInteger nextGeneratedId = new AtomicInteger(1);
public static int customGenerateViewId() {
for (; ; ) {
final int result = nextGeneratedId.get();
// aapt-generated IDs have the high byte nonzero; clamp to the range under that.
int newValue = result + 1;
if (newValue > 0x00FFFFFF) {
newValue = 1; // Roll over to 1, not 0.
}
@hrules6872
hrules6872 / OutlineTextView.java
Created April 13, 2015 14:12
Outline TextView
public class OutlineTextView extends TextView {
private static final int DEFAULT_OUTLINE_COLOR = 0xFF000000;
private static final int DEFAULT_OUTLINE_SIZE = 7;
private static final boolean DEFAULT_OUTLINE_STATE = true;
private int outlineColor;
private int outlineSize;
private boolean outlineState;
public OutlineTextView(Context context) {
@hrules6872
hrules6872 / SpaceItemDecoration.java
Last active April 25, 2020 12:04
Space ItemDecoration for RecyclerView
public class SpaceItemDecoration extends RecyclerView.ItemDecoration {
private static final boolean DEFAULT_ADD_SPACE_ABOVE_FIRST_ITEM = false;
private static final boolean DEFAULT_ADD_SPACE_BELOW_LAST_ITEM = false;
private final int space;
private final boolean addSpaceAboveFirstItem;
private final boolean addSpaceBelowLastItem;
public SpaceItemDecoration(int space) {
this(space, DEFAULT_ADD_SPACE_ABOVE_FIRST_ITEM, DEFAULT_ADD_SPACE_BELOW_LAST_ITEM);
@hrules6872
hrules6872 / SquareRelativeLayout.java
Last active June 10, 2016 12:58
SquareRelativeLayout
public class SquareRelativeLayout extends RelativeLayout {
public SquareRelativeLayout(Context context) {
this(context, null);
}
public SquareRelativeLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
@hrules6872
hrules6872 / ObservableScrollView.java
Created May 7, 2015 14:13
ObservableScrollView
public class ObservableScrollView extends ScrollView {
private static final int DEFAULT_THRESHOLD_DP = 4;
private ScrollDirectionListener scrollDirectionListener;
private int scrollThreshold;
public ObservableScrollView(Context context) {
this(context, null);
}
public class SafeStringUtils {
public static boolean safeEquals(Object o1, Object o2) {
return o1 != null && o1.equals(o2);
}
public static boolean safeEqualsIgnoreCase(String s1, String s2) {
return s1 != null && s1.equalsIgnoreCase(s2);
}
public static boolean safeIsEmpty(String s) {
@hrules6872
hrules6872 / ExampleActivity.java
Created August 12, 2015 07:57
HorizontalScrollViewSelector
int totalItems=10;
horizontalScrollView = (HorizontalScrollViewSelector) findViewById(R.id.horizontalScrollView);
horizontalScrollView.setListener(new HorizontalScrollViewSelector.OnScrollChangedListener() {
@Override
public void onScrollChanged(int totalX, int x) {
items = x * totalItems / maxX);
}
});