summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorMathew Maidment <mathew1800@gmail.com>2016-01-23 17:05:57 -0500
committerMathew Maidment <mathew1800@gmail.com>2016-01-23 17:05:57 -0500
commitaa39b0dab1bf435df690a5a8d41338824dacba53 (patch)
tree99476eb92138c748564d2cce3203b018bd57a909 /Source/Android/app/src/main/java
parent6e13496d8df616dadf2270a7ed99fd8728c93760 (diff)
parent04974835d657d8e10440bf002fa2dd26fbdeb851 (diff)
Merge pull request #3557 from sigmabeta/android-settings-swag
[Android] Add fragment transition animations to the Settings UI screen
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java28
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java20
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java10
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFrameLayout.java56
5 files changed, 111 insertions, 5 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java
index 7cd744aff2..9af89ae48a 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java
@@ -1,10 +1,10 @@
package org.dolphinemu.dolphinemu.ui.settings;
+import android.app.FragmentTransaction;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
@@ -46,15 +46,29 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
}
@Override
+ public void onBackPressed()
+ {
+ mPresenter.onBackPressed();
+ }
+
+
+ @Override
public void showSettingsFragment(String menuTag, boolean addToStack)
{
- FragmentTransaction transaction = getSupportFragmentManager().beginTransaction()
- .replace(R.id.frame_content, SettingsFragment.newInstance(menuTag), SettingsFragment.FRAGMENT_TAG);
+ FragmentTransaction transaction = getFragmentManager().beginTransaction();
if (addToStack)
{
+ transaction.setCustomAnimations(
+ R.animator.settings_enter,
+ R.animator.settings_exit,
+ R.animator.settings_pop_enter,
+ R.animator.setttings_pop_exit);
+
transaction.addToBackStack(null);
+ mPresenter.addToStack();
}
+ transaction.replace(R.id.frame_content, SettingsFragment.newInstance(menuTag), SettingsFragment.FRAGMENT_TAG);
transaction.commit();
}
@@ -88,9 +102,15 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
+ @Override
+ public void popBackStack()
+ {
+ getFragmentManager().popBackStackImmediate();
+ }
+
private SettingsFragment getFragment()
{
- return (SettingsFragment) getSupportFragmentManager().findFragmentByTag(SettingsFragment.FRAGMENT_TAG);
+ return (SettingsFragment) getFragmentManager().findFragmentByTag(SettingsFragment.FRAGMENT_TAG);
}
public static final String ARGUMENT_FILE_NAME = BuildConfig.APPLICATION_ID + ".file_name";
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java
index aac7e8e2ed..46d95e47f6 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java
@@ -20,6 +20,8 @@ public final class SettingsActivityPresenter
private String mFileName;
private HashMap<String, SettingSection> mSettingsBySection;
+ private int mStackCount;
+
public SettingsActivityPresenter(SettingsActivityView view)
{
mView = view;
@@ -94,4 +96,22 @@ public final class SettingsActivityPresenter
});
}
}
+
+ public void addToStack()
+ {
+ mStackCount++;
+ }
+
+ public void onBackPressed()
+ {
+ if (mStackCount > 0)
+ {
+ mView.popBackStack();
+ mStackCount--;
+ }
+ else
+ {
+ mView.finish();
+ }
+ }
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java
index 2409ed1221..84221b0220 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java
@@ -48,4 +48,14 @@ public interface SettingsActivityView
* @param message The contents of the onscreen message.
*/
void showToastMessage(String message);
+
+ /**
+ * Show the previous fragment.
+ */
+ void popBackStack();
+
+ /**
+ * End the activity.
+ */
+ void finish();
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java
index 89e5edb056..0f83d4b591 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java
@@ -1,9 +1,9 @@
package org.dolphinemu.dolphinemu.ui.settings;
+import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFrameLayout.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFrameLayout.java
new file mode 100644
index 0000000000..fc3d46e01d
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFrameLayout.java
@@ -0,0 +1,56 @@
+package org.dolphinemu.dolphinemu.ui.settings;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.FrameLayout;
+
+/**
+ * FrameLayout subclass with few Properties added to simplify animations.
+ */
+public final class SettingsFrameLayout extends FrameLayout
+{
+ private float mVisibleness = 1.0f;
+
+ public SettingsFrameLayout(Context context)
+ {
+ super(context);
+ }
+
+ public SettingsFrameLayout(Context context, AttributeSet attrs)
+ {
+ super(context, attrs);
+ }
+
+ public SettingsFrameLayout(Context context, AttributeSet attrs, int defStyleAttr)
+ {
+ super(context, attrs, defStyleAttr);
+ }
+
+ public SettingsFrameLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
+ {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ public float getYFraction()
+ {
+ return getY() / getHeight();
+ }
+
+ public void setYFraction(float yFraction)
+ {
+ final int height = getHeight();
+ setY((height > 0) ? (yFraction * height) : -9999);
+ }
+
+ public float getVisibleness()
+ {
+ return mVisibleness;
+ }
+
+ public void setVisibleness(float visibleness)
+ {
+ setScaleX(visibleness);
+ setScaleY(visibleness);
+ setAlpha(visibleness);
+ }
+}