(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; |