Skip to content

Instantly share code, notes, and snippets.

Christopher Perry christopherperry

Block or report user

Report or block christopherperry

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@christopherperry
christopherperry / AndroidVersion.java
Created Jul 27, 2012
Robolectric test runner with Guice injection, custom class binding using annotations, and android version support.
View AndroidVersion.java
package annotations;
import android.os.Build;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
@christopherperry
christopherperry / adb+
Created Jul 30, 2012
A bash script that let's you issue adb commands to multiple devices at once
View adb+
#!/bin/bash
# Script adb+
# Usage
# You can run any command adb provides on all your currently connected devices
# ./adb+ <command> is the equivalent of ./adb -s <serial number> <command>
#
# Examples
# ./adb+ version
# ./adb+ install apidemo.apk
# ./adb+ uninstall com.example.android.apis
@christopherperry
christopherperry / SwipeLinearLayout.java
Created Aug 27, 2012
Android LinearLayout that handles left swipes.
View SwipeLinearLayout.java
import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
import android.widget.LinearLayout;
public class SwipeLinearLayout extends LinearLayout {
private GestureDetector gestureDetector;
private OnSwipeListener listener;
@christopherperry
christopherperry / robolectric-library-resource-loading.java
Created Aug 30, 2012 — forked from pplante/robolectric-library-resource-loading.java
Robolectric does not support loading resources from an Android Library project such as ActionBarSherlock of FlyInMenu, so this patch allows you to specify a library project to load resources in tests.
View robolectric-library-resource-loading.java
// In ResourceLoader.java I added the following method:
//
public void loadLibraryProjectResources(File libraryProjectRoot) throws Exception {
File systemResourceDir = getSystemResourceDir(getPathToAndroidResources());
File localValueResourceDir = getValueResourceDir(libraryProjectRoot);
File systemValueResourceDir = getValueResourceDir(systemResourceDir);
loadStringResources(localValueResourceDir, systemValueResourceDir);
loadPluralsResources(localValueResourceDir, systemValueResourceDir);
loadValueResources(localValueResourceDir, systemValueResourceDir);
@christopherperry
christopherperry / CheckableLinearLayout
Created Sep 18, 2012
A LinearLayout that implements the Checkable interface, allowing a LinearLayout to be put into a checked state.
View CheckableLinearLayout
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Checkable;
import android.widget.LinearLayout;
@christopherperry
christopherperry / html_directory_selection
Created Jun 29, 2013
Select directory with HTML input field.
View html_directory_selection
<input type="file" name="files[]" multiple directory webkitdirectory mozdirectory>
@christopherperry
christopherperry / Intellij Unit Test VM options
Last active Dec 24, 2015
IntelliJ memory setting for unit tests
View Intellij Unit Test VM options
Set VM options to: -ea -Xms800m -Xmx800m -XX:MaxPermSize=500m
@christopherperry
christopherperry / ExpiringLruCache.java
Last active May 28, 2020
LruCache for Android with expiring keys. Instead of modifying LruCache directly I used delegation to get around final keyword usage and a dirty hack to override everything else.
View ExpiringLruCache.java
import android.os.SystemClock;
import android.support.v4.util.LruCache;
import java.util.HashMap;
import java.util.Map;
/**
* An Lru Cache that allows entries to expire after
* a period of time. Items are evicted based on a combination
* of time, and usage. Adding items past the {@code maxSize}
View HappyDebuggingSuckers.java
@Test
public void happyDebuggingSuckers() throws SecurityException, NoSuchFieldException, IllegalAccessException {
Field value = Boolean.class.getDeclaredField("value");
value.setAccessible(true);
Boolean trueBool = true;
Boolean falseBool = false;
value.setBoolean(trueBool, false);
You can’t perform that action at this time.