summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2019-09-16 00:07:35 +0200
committerByteHamster <info@bytehamster.com>2019-09-16 00:09:10 +0200
commitf17737e9872a5382771879f21a88eb7ecb8f83f6 (patch)
tree5e405e4fa5ade9a59add55f0736c12a8e9fd83e4 /app
parent26e47b9efd5e82a02e2ea80ee16f0c0180be37ae (diff)
downloadAntennaPod-f17737e9872a5382771879f21a88eb7ecb8f83f6.zip
Added card flip animation to feed info fragment
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java26
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/TransitionEffect.java5
-rw-r--r--app/src/main/res/anim/card_flip_left_in.xml25
-rw-r--r--app/src/main/res/anim/card_flip_left_out.xml18
-rw-r--r--app/src/main/res/anim/card_flip_right_in.xml25
-rw-r--r--app/src/main/res/anim/card_flip_right_out.xml18
-rw-r--r--app/src/main/res/values/integers.xml5
8 files changed, 120 insertions, 5 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
index 339ce01c2..a35c0eaad 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
@@ -32,6 +32,7 @@ import android.widget.Toast;
import com.bumptech.glide.Glide;
+import de.danoeh.antennapod.fragment.TransitionEffect;
import de.danoeh.antennapod.preferences.PreferenceUpgrader;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.Validate;
@@ -368,15 +369,32 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
}
}
- public void loadChildFragment(Fragment fragment) {
+ public void loadChildFragment(Fragment fragment, TransitionEffect transition) {
Validate.notNull(fragment);
- FragmentManager fm = getSupportFragmentManager();
- fm.beginTransaction()
- .replace(R.id.main_view, fragment, "main")
+ FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
+
+ switch (transition) {
+ case FADE:
+ transaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
+ break;
+ case FLIP:
+ transaction.setCustomAnimations(
+ R.anim.card_flip_right_in,
+ R.anim.card_flip_right_out,
+ R.anim.card_flip_left_in,
+ R.anim.card_flip_left_out);
+ break;
+ }
+
+ transaction.replace(R.id.main_view, fragment, "main")
.addToBackStack(null)
.commit();
}
+ public void loadChildFragment(Fragment fragment) {
+ loadChildFragment(fragment, TransitionEffect.NONE);
+ }
+
public void dismissChildFragment() {
getSupportFragmentManager().popBackStack();
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
index 93a026669..ad08cfb23 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
@@ -516,7 +516,8 @@ public class FeedItemlistFragment extends ListFragment {
private void showFeedInfo() {
if (feed != null) {
- ((MainActivity) getActivity()).loadChildFragment(FeedInfoFragment.newInstance(feed));
+ FeedInfoFragment fragment = FeedInfoFragment.newInstance(feed);
+ ((MainActivity) getActivity()).loadChildFragment(fragment, TransitionEffect.FLIP);
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/TransitionEffect.java b/app/src/main/java/de/danoeh/antennapod/fragment/TransitionEffect.java
new file mode 100644
index 000000000..461fa9da3
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/TransitionEffect.java
@@ -0,0 +1,5 @@
+package de.danoeh.antennapod.fragment;
+
+public enum TransitionEffect {
+ NONE, FLIP, FADE
+}
diff --git a/app/src/main/res/anim/card_flip_left_in.xml b/app/src/main/res/anim/card_flip_left_in.xml
new file mode 100644
index 000000000..0ffc85aec
--- /dev/null
+++ b/app/src/main/res/anim/card_flip_left_in.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Before rotating, immediately set the alpha to 0. -->
+ <objectAnimator
+ android:valueFrom="1.0"
+ android:valueTo="0.0"
+ android:propertyName="alpha"
+ android:duration="0" />
+
+ <!-- Rotate. -->
+ <objectAnimator
+ android:valueFrom="-180"
+ android:valueTo="0"
+ android:propertyName="rotationY"
+ android:interpolator="@android:interpolator/accelerate_decelerate"
+ android:duration="@integer/card_flip_time_full" />
+
+ <!-- Half-way through the rotation (see startOffset), set the alpha to 1. -->
+ <objectAnimator
+ android:valueFrom="0.0"
+ android:valueTo="1.0"
+ android:propertyName="alpha"
+ android:startOffset="@integer/card_flip_time_half"
+ android:duration="1" />
+</set> \ No newline at end of file
diff --git a/app/src/main/res/anim/card_flip_left_out.xml b/app/src/main/res/anim/card_flip_left_out.xml
new file mode 100644
index 000000000..817f0d3fc
--- /dev/null
+++ b/app/src/main/res/anim/card_flip_left_out.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Rotate. -->
+ <objectAnimator
+ android:valueFrom="0"
+ android:valueTo="180"
+ android:propertyName="rotationY"
+ android:interpolator="@android:interpolator/accelerate_decelerate"
+ android:duration="@integer/card_flip_time_full" />
+
+ <!-- Half-way through the rotation (see startOffset), set the alpha to 0. -->
+ <objectAnimator
+ android:valueFrom="1.0"
+ android:valueTo="0.0"
+ android:propertyName="alpha"
+ android:startOffset="@integer/card_flip_time_half"
+ android:duration="1" />
+</set> \ No newline at end of file
diff --git a/app/src/main/res/anim/card_flip_right_in.xml b/app/src/main/res/anim/card_flip_right_in.xml
new file mode 100644
index 000000000..31ff1dde5
--- /dev/null
+++ b/app/src/main/res/anim/card_flip_right_in.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Before rotating, immediately set the alpha to 0. -->
+ <objectAnimator
+ android:valueFrom="1.0"
+ android:valueTo="0.0"
+ android:propertyName="alpha"
+ android:duration="0" />
+
+ <!-- Rotate. -->
+ <objectAnimator
+ android:valueFrom="180"
+ android:valueTo="0"
+ android:propertyName="rotationY"
+ android:interpolator="@android:interpolator/accelerate_decelerate"
+ android:duration="@integer/card_flip_time_full" />
+
+ <!-- Half-way through the rotation (see startOffset), set the alpha to 1. -->
+ <objectAnimator
+ android:valueFrom="0.0"
+ android:valueTo="1.0"
+ android:propertyName="alpha"
+ android:startOffset="@integer/card_flip_time_half"
+ android:duration="1" />
+</set> \ No newline at end of file
diff --git a/app/src/main/res/anim/card_flip_right_out.xml b/app/src/main/res/anim/card_flip_right_out.xml
new file mode 100644
index 000000000..b57113fea
--- /dev/null
+++ b/app/src/main/res/anim/card_flip_right_out.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Rotate. -->
+ <objectAnimator
+ android:valueFrom="0"
+ android:valueTo="-180"
+ android:propertyName="rotationY"
+ android:interpolator="@android:interpolator/accelerate_decelerate"
+ android:duration="@integer/card_flip_time_full" />
+
+ <!-- Half-way through the rotation (see startOffset), set the alpha to 0. -->
+ <objectAnimator
+ android:valueFrom="1.0"
+ android:valueTo="0.0"
+ android:propertyName="alpha"
+ android:startOffset="@integer/card_flip_time_half"
+ android:duration="1" />
+</set> \ No newline at end of file
diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml
new file mode 100644
index 000000000..8c444ee8b
--- /dev/null
+++ b/app/src/main/res/values/integers.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <integer name="card_flip_time_full">400</integer>
+ <integer name="card_flip_time_half">200</integer>
+</resources> \ No newline at end of file