(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
package com.your.package; | |
import android.support.design.widget.Snackbar; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import com.daimajia.easing.BaseEasingMethod; | |
import com.daimajia.easing.Glider; | |
import com.daimajia.easing.Skill; | |
import com.nineoldandroids.animation.AnimatorSet; |
package com.example.testSingleton; | |
import android.app.Activity; | |
import android.content.Intent; | |
import android.os.Bundle; | |
import android.widget.Toast; | |
public class ActivityA extends Activity { | |
@Override | |
public void onCreate(Bundle savedInstanceState) { |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
package com.vtuforum.android.views | |
import android.app.ProgressDialog | |
import android.os.Bundle | |
import android.support.design.widget.CoordinatorLayout | |
import android.support.v7.app.AppCompatActivity | |
import android.widget.FrameLayout | |
import android.widget.ImageButton | |
import android.widget.TextView | |
import com.vtuforum.vtustudies.R |
import android.support.annotation.Nullable; | |
import android.util.Base64; | |
import java.nio.ByteBuffer; | |
import java.security.SecureRandom; | |
import javax.crypto.Cipher; | |
import javax.crypto.spec.IvParameterSpec; | |
import javax.crypto.spec.SecretKeySpec; |
package com.example.videointro; | |
import java.io.IOException; | |
import android.annotation.TargetApi; | |
import android.content.Context; | |
import android.content.res.AssetFileDescriptor; | |
import android.media.MediaPlayer; | |
import android.os.Build; | |
import android.util.AttributeSet; |
import android.app.Activity | |
import android.support.annotation.IdRes | |
import android.view.View | |
fun <T : View> Activity.bind(@IdRes idRes: Int): Lazy<T> { | |
@Suppress("UNCHECKED_CAST") | |
return unsafeLazy { findViewById(idRes) as T } | |
} | |
fun <T : View> View.bind(@IdRes idRes: Int): Lazy<T> { |
class SafeClickListener( | |
private var defaultInterval: Int = 1000, | |
private val onSafeCLick: (View) -> Unit | |
) : View.OnClickListener { | |
private var lastTimeClicked: Long = 0 | |
override fun onClick(v: View) { | |
if (SystemClock.elapsedRealtime() - lastTimeClicked < defaultInterval) { | |
return |
package com.example.yourapp; | |
import android.annotation.SuppressLint; | |
import android.content.Context; | |
import android.content.SharedPreferences; | |
import android.os.Build; | |
import android.security.KeyPairGeneratorSpec; | |
import android.security.keystore.KeyGenParameterSpec; | |
import android.security.keystore.KeyProperties; | |
import android.support.annotation.RequiresApi; |