Skip to content

Instantly share code, notes, and snippets.

@vaibhav-jani
vaibhav-jani / AnimateViewSnippet.java
Created August 29, 2016 10:24
Animate from one position to another
int x = targetView.getTop() + targetView.getWidth() / 2;
int y = targetView.getTop() + targetView.getHeight() / 2;
int fromX = sourceView.getTop() + sourceView.getWidth() / 2;
int fromY = sourceView.getTop() + sourceView.getHeight() / 2;
final int dx = x - fromX;
final int dy = y - fromY;
@vaibhav-jani
vaibhav-jani / Logger.java
Created July 4, 2016 08:01 — forked from anonymous/Logger.java
Android Log wrapper
import android.content.Context;
import android.util.Log;
public class Logger {
private static final boolean shouldLog = true;
public static void i(String tag, String msg) {
@vaibhav-jani
vaibhav-jani / ActivityGroupSample.java
Created June 15, 2016 06:02
Multiple activities in samescreen.
LocalActivityManager mgr = getLocalActivityManager();
Intent i = new Intent(this, SomeActivity.class);
Window w = mgr.startActivity("unique_per_activity_string", i);
View wd = w != null ? w.getDecorView() : null;
if(wd != null) {
mSomeContainer.addView(wd);
}
package com.firebase.utils;
import java.util.Date;
/**
* Fancy ID generator that creates 20-character string identifiers with the
* following properties:
*
* 1. They're based on timestamp so that they sort *after* any existing ids.
* 2. They contain 72-bits of random data after the timestamp so that IDs won't
@vaibhav-jani
vaibhav-jani / SlidingTabLayout.java
Created June 14, 2016 10:20
Sliding tab (to customize viewpage indicator)
import android.content.Context;
import android.graphics.Typeface;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
@vaibhav-jani
vaibhav-jani / ExampleActivity.java
Last active June 8, 2016 11:11
Custom parallax collapsing toolbar
package com.example.vaibhav.testingapp;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import com.utils.Logger;
import com.utils.PixelUtils;
@vaibhav-jani
vaibhav-jani / GreetingClient.java
Created April 19, 2016 06:24 — forked from anonymous/GreetingClient.java
Socket sample Java
// File Name GreetingClient.java
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
@vaibhav-jani
vaibhav-jani / CircularPropertyAnimation.Java
Last active June 13, 2016 06:55
Animation : Rotate view across another view
package ui.animation;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
public class CircularPropertyAnimation extends Animation {
private float startAngle = 90;
import android.content.Context;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import java.lang.reflect.Field;
import java.util.Set;
import java.util.prefs.AbstractPreferences;
@vaibhav-jani
vaibhav-jani / EncryptedAppPrefecerences,java
Created March 3, 2016 14:23
Encrypted App Prefecerences java
/**
* Warning, this gives a false sense of security. If an attacker has enough access to
* acquire your password store, then he almost certainly has enough access to acquire your
* source binary and figure out your encryption key. However, it will prevent casual
* investigators from acquiring passwords, and thereby may prevent undesired negative
* publicity.
*/
public class ObscuredSharedPreferences implements SharedPreferences {
protected static final String UTF8 = "utf-8";
private static final char[] SEKRIT = ... ; // INSERT A RANDOM PASSWORD HERE.