From 5347f67d74550dd5c48c05dd04fa78380c759ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20P=C3=B3=C5=82grabia?= <tpsa.s.a@gmail.com> Date: Sat, 17 Sep 2016 12:47:24 +0200 Subject: [PATCH] Added transition while swiping left/right. --- .../urbanexplorer/MainActivity.java | 37 ++++++++++++++++++- app/src/main/res/anim/slide_in_left.xml | 8 ++++ app/src/main/res/anim/slide_in_right.xml | 8 ++++ app/src/main/res/anim/slide_out_left.xml | 8 ++++ app/src/main/res/anim/slide_out_right.xml | 8 ++++ 5 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/anim/slide_in_left.xml create mode 100644 app/src/main/res/anim/slide_in_right.xml create mode 100644 app/src/main/res/anim/slide_out_left.xml create mode 100644 app/src/main/res/anim/slide_out_right.xml diff --git a/app/src/main/java/pl/tpolgrabia/urbanexplorer/MainActivity.java b/app/src/main/java/pl/tpolgrabia/urbanexplorer/MainActivity.java index 76bbb03..a03679b 100644 --- a/app/src/main/java/pl/tpolgrabia/urbanexplorer/MainActivity.java +++ b/app/src/main/java/pl/tpolgrabia/urbanexplorer/MainActivity.java @@ -61,6 +61,7 @@ public class MainActivity extends ActionBarActivity { private GestureDetector.OnGestureListener swipeHandler; private PanoramioImageInfo photoInfo; private ProgressDialog progressDlg; + private int oldFragmentId = 0; public StandardLocationListener getLocationCallback() { return locationCallback; @@ -216,6 +217,27 @@ public class MainActivity extends ActionBarActivity { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction ctx = fragmentManager.beginTransaction(); + Log.v(CLASS_TAG, "old fragment id: " + oldFragmentId + ", current fragment id: " + currentFragmentId); + if (oldFragmentId != currentFragmentId) { + if (currentFragmentId < oldFragmentId) { + // slide left animation + Log.v(CLASS_TAG, "sliding left animation"); + ctx.setCustomAnimations( + R.anim.slide_in_left, + R.anim.slide_out_left, + R.anim.slide_in_right, + R.anim.slide_out_right); + } else { + // slide right animation + Log.v(CLASS_TAG, "sliding right animation"); + ctx.setCustomAnimations( + R.anim.slide_in_right, + R.anim.slide_out_right, + R.anim.slide_in_left, + R.anim.slide_out_left); + } + } + ctx.replace(R.id.fragments, fragment, tag); ctx.addToBackStack(null); ctx.commit(); @@ -235,12 +257,17 @@ public class MainActivity extends ActionBarActivity { } public void swipeLeft() { - currentFragmentId = (int)Math.max(MIN_FRAGMENT_ID, currentFragmentId-1); + changeCurrentFragId((int)Math.max(MIN_FRAGMENT_ID, currentFragmentId-1)); switchFragment(); } + private void changeCurrentFragId(int nextFragmentId) { + oldFragmentId = currentFragmentId; + currentFragmentId = nextFragmentId; + } + public void swipeRight() { - currentFragmentId = (int)Math.min(MAX_FRAGMENT_ID, currentFragmentId+1); + changeCurrentFragId((int)Math.min(MAX_FRAGMENT_ID, currentFragmentId+1)); switchFragment(); } @@ -350,6 +377,12 @@ public class MainActivity extends ActionBarActivity { super.onSaveInstanceState(outState); outState.putSerializable(FRAG_ID, currentFragmentId); outState.putSerializable(PHOTO_INFO, photoInfo); + +// SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); +// SharedPreferences.Editor editor = sharedPrefs.edit(); +// editor.putInt(FRAG_ID, currentFragmentId); +// editor.commit(); + Log.v(CLASS_TAG, "2 Saving current fragment id: " + currentFragmentId); } diff --git a/app/src/main/res/anim/slide_in_left.xml b/app/src/main/res/anim/slide_in_left.xml new file mode 100644 index 0000000..07bb91c --- /dev/null +++ b/app/src/main/res/anim/slide_in_left.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<set xmlns:android="http://schemas.android.com/apk/res/android"> + <translate + android:fromXDelta="100%" + android:toXDelta="0%" + android:interpolator="@android:anim/decelerate_interpolator" + android:duration="1000" /> +</set> \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_right.xml b/app/src/main/res/anim/slide_in_right.xml new file mode 100644 index 0000000..237063a --- /dev/null +++ b/app/src/main/res/anim/slide_in_right.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<set xmlns:android="http://schemas.android.com/apk/res/android"> + <translate + android:fromXDelta="-100%" + android:toXDelta="0%" + android:interpolator="@android:anim/decelerate_interpolator" + android:duration="1000" /> +</set> \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_left.xml b/app/src/main/res/anim/slide_out_left.xml new file mode 100644 index 0000000..21dc08f --- /dev/null +++ b/app/src/main/res/anim/slide_out_left.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<set xmlns:android="http://schemas.android.com/apk/res/android"> + <translate + android:fromXDelta="0%" + android:toXDelta="-100%" + android:interpolator="@android:anim/decelerate_interpolator" + android:duration="1000" /> +</set> \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_right.xml b/app/src/main/res/anim/slide_out_right.xml new file mode 100644 index 0000000..e49f999 --- /dev/null +++ b/app/src/main/res/anim/slide_out_right.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<set xmlns:android="http://schemas.android.com/apk/res/android"> + <translate + android:fromXDelta="0%" + android:toXDelta="100%" + android:interpolator="@android:anim/decelerate_interpolator" + android:duration="1000" /> +</set> \ No newline at end of file