diff options
| author | Mathew Maidment <mathew1800@gmail.com> | 2016-01-23 17:05:57 -0500 |
|---|---|---|
| committer | Mathew Maidment <mathew1800@gmail.com> | 2016-01-23 17:05:57 -0500 |
| commit | aa39b0dab1bf435df690a5a8d41338824dacba53 (patch) | |
| tree | 99476eb92138c748564d2cce3203b018bd57a909 /Source/Android/app/src/main/java | |
| parent | 6e13496d8df616dadf2270a7ed99fd8728c93760 (diff) | |
| parent | 04974835d657d8e10440bf002fa2dd26fbdeb851 (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')
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); + } +} |
