diff options
author | Allan Wang <me@allanwang.ca> | 2017-06-12 20:01:34 -0700 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2017-06-12 20:01:34 -0700 |
commit | 1805793c7cea8a3c56a8111e0a80d7ac5da95f63 (patch) | |
tree | 204a801f948e6f2e22b16ee5414da4b99c96a4bc /library/src | |
parent | 37a2059fa15f23093fc38bca236f517ef96b030d (diff) | |
download | kau-1805793c7cea8a3c56a8111e0a80d7ac5da95f63.tar.gz kau-1805793c7cea8a3c56a8111e0a80d7ac5da95f63.tar.bz2 kau-1805793c7cea8a3c56a8111e0a80d7ac5da95f63.zip |
Add sliding activities
Diffstat (limited to 'library/src')
4 files changed, 40 insertions, 0 deletions
diff --git a/library/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt b/library/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt index e2c1eb8..87bc547 100644 --- a/library/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt +++ b/library/src/main/kotlin/ca/allanwang/kau/utils/ContextUtils.kt @@ -9,6 +9,7 @@ import android.net.ConnectivityManager import android.os.Bundle import android.os.Handler import android.support.annotation.* +import android.support.v4.app.ActivityOptionsCompat import android.support.v4.content.ContextCompat import android.util.TypedValue import android.widget.Toast @@ -39,6 +40,27 @@ fun Context.startActivity(clazz: Class<out Activity>, clearStack: Boolean = fals if (this is Activity && clearStack) finish() } +/** + * Bring in activity from the right + */ +fun Context.startActivitySlideIn(clazz: Class<out Activity>, clearStack: Boolean = false, intentBuilder: Intent.() -> Unit = {}, bundleBuilder: Bundle.() -> Unit = {}) { + val bundle = ActivityOptionsCompat.makeCustomAnimation(this, R.anim.kau_slide_in_right, R.anim.kau_fade_out).toBundle() + bundle.bundleBuilder() + startActivity(clazz, clearStack, intentBuilder, bundle) +} + +/** + * Bring in activity from behind while pushing the current activity to the right + * This replicates the exit animation of a sliding activity, but is a forward creation + * For the animation to work, the previous activity should not be in the stack (otherwise you wouldn't need this in the first place) + * Consequently, the stack will be cleared by default + */ +fun Context.startActivitySlideOut(clazz: Class<out Activity>, clearStack: Boolean = true, intentBuilder: Intent.() -> Unit = {}, bundleBuilder: Bundle.() -> Unit = {}) { + val bundle = ActivityOptionsCompat.makeCustomAnimation(this, R.anim.kau_fade_in, R.anim.kau_slide_out_right_top).toBundle() + bundle.bundleBuilder() + startActivity(clazz, clearStack, intentBuilder, bundle) +} + var Activity.navigationBarColor: Int get() = if (buildIsLollipopAndUp) window.navigationBarColor else Color.BLACK set(value) { diff --git a/library/src/main/res/anim/kau_fade_in.xml b/library/src/main/res/anim/kau_fade_in.xml new file mode 100644 index 0000000..03312a2 --- /dev/null +++ b/library/src/main/res/anim/kau_fade_in.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<alpha xmlns:android="http://schemas.android.com/apk/res/android" + android:duration="@android:integer/config_shortAnimTime" + android:fromAlpha="0.0" + android:toAlpha="1.0" />
\ No newline at end of file diff --git a/library/src/main/res/anim/kau_fade_out.xml b/library/src/main/res/anim/kau_fade_out.xml new file mode 100644 index 0000000..322befc --- /dev/null +++ b/library/src/main/res/anim/kau_fade_out.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<alpha xmlns:android="http://schemas.android.com/apk/res/android" + android:duration="@android:integer/config_shortAnimTime" + android:fromAlpha="1.0" + android:toAlpha="0.0" />
\ No newline at end of file diff --git a/library/src/main/res/anim/kau_slide_out_right_top.xml b/library/src/main/res/anim/kau_slide_out_right_top.xml new file mode 100644 index 0000000..5b63474 --- /dev/null +++ b/library/src/main/res/anim/kau_slide_out_right_top.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<set xmlns:android="http://schemas.android.com/apk/res/android" + android:zAdjustment="top"> + <translate + android:duration="@android:integer/config_shortAnimTime" + android:fromXDelta="0" + android:toXDelta="100%p" /> +</set>
\ No newline at end of file |