summaryrefslogtreecommitdiff
path: root/Source/Android/app/src
diff options
context:
space:
mode:
authorsigmabeta <bastos.eder@gmail.com>2015-06-26 08:32:51 -0400
committersigmabeta <bastos.eder@gmail.com>2015-06-26 08:32:51 -0400
commit0fcf0e1d213892dd316bb57e5932c2e77fba691b (patch)
tree548c94a20fe8ec04395892fdde3f28f6790b7f5a /Source/Android/app/src
parent0679e43efec8e9ca8dc690ea2a59bf7c1d045f7c (diff)
Android: Show transition animation while game loads.
Diffstat (limited to 'Source/Android/app/src')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java49
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java8
-rw-r--r--Source/Android/app/src/main/res/layout/activity_emulation.xml12
-rw-r--r--Source/Android/app/src/main/res/layout/card_game.xml2
-rw-r--r--Source/Android/app/src/main/res/transition/change_image_transform.xml4
-rw-r--r--Source/Android/app/src/main/res/values/styles.xml26
6 files changed, 90 insertions, 11 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
index ce3f9624c7..44bfbb8272 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
@@ -12,9 +12,11 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewTreeObserver;
import android.widget.FrameLayout;
import android.widget.ImageView;
+import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
import org.dolphinemu.dolphinemu.NativeLibrary;
@@ -51,6 +53,10 @@ public final class EmulationActivity extends AppCompatActivity
{
super.onCreate(savedInstanceState);
+ // Picasso will take a while to load these big-ass screenshots. So don't run
+ // the animation until we say so.
+ postponeEnterTransition();
+
mDeviceHasTouchScreen = getPackageManager().hasSystemFeature("android.hardware.touchscreen");
// Get a handle to the Window containing the UI.
@@ -95,21 +101,42 @@ public final class EmulationActivity extends AppCompatActivity
Picasso.with(this)
.load(screenPath)
- .fit()
.noFade()
- .into(mImageView);
+ .noPlaceholder()
+ .into(mImageView, new Callback()
+ {
+ @Override
+ public void onSuccess()
+ {
+ scheduleStartPostponedTransition(mImageView);
+ }
+
+ @Override
+ public void onError()
+ {
+ // Still have to do this, or else the app will crash.
+ scheduleStartPostponedTransition(mImageView);
+ }
+ });
mImageView.animate()
.setStartDelay(2000)
.setDuration(500)
.alpha(0.0f)
+ .withStartAction(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ mFrameLayout.setVisibility(View.VISIBLE);
+ }
+ })
.withEndAction(new Runnable()
{
@Override
public void run()
{
mImageView.setVisibility(View.GONE);
- mFrameLayout.setVisibility(View.VISIBLE);
}
});
@@ -354,4 +381,20 @@ public final class EmulationActivity extends AppCompatActivity
hideSystemUiAfterDelay();
}
+
+
+ private void scheduleStartPostponedTransition(final View sharedElement)
+ {
+ sharedElement.getViewTreeObserver().addOnPreDrawListener(
+ new ViewTreeObserver.OnPreDrawListener()
+ {
+ @Override
+ public boolean onPreDraw()
+ {
+ sharedElement.getViewTreeObserver().removeOnPreDrawListener(this);
+ startPostponedEnterTransition();
+ return true;
+ }
+ });
+ }
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
index 8b279c52c2..3cb832f91b 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
@@ -1,6 +1,7 @@
package org.dolphinemu.dolphinemu.adapters;
import android.app.Activity;
+import android.app.ActivityOptions;
import android.content.Intent;
import android.database.Cursor;
import android.database.DataSetObserver;
@@ -222,7 +223,12 @@ public final class GameAdapter extends RecyclerView.Adapter<GameViewHolder> impl
intent.putExtra("SelectedTitle", holder.title);
intent.putExtra("ScreenPath", holder.screenshotPath);
- view.getContext().startActivity(intent);
+ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(
+ (Activity) view.getContext(),
+ holder.imageScreenshot,
+ "image_game_screenshot");
+
+ view.getContext().startActivity(intent, options.toBundle());
}
/**
diff --git a/Source/Android/app/src/main/res/layout/activity_emulation.xml b/Source/Android/app/src/main/res/layout/activity_emulation.xml
index 5a644b260a..c686c6191e 100644
--- a/Source/Android/app/src/main/res/layout/activity_emulation.xml
+++ b/Source/Android/app/src/main/res/layout/activity_emulation.xml
@@ -3,14 +3,16 @@
android:layout_height="match_parent"
>
- <ImageView
+ <FrameLayout
+ android:id="@+id/frame_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:id="@+id/image_screenshot"/>
+ android:visibility="invisible"/>
- <FrameLayout
- android:id="@+id/frame_content"
+ <ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:visibility="gone"/>
+ android:id="@+id/image_screenshot"
+ android:transitionName="image_game_screenshot"/>
+
</FrameLayout> \ No newline at end of file
diff --git a/Source/Android/app/src/main/res/layout/card_game.xml b/Source/Android/app/src/main/res/layout/card_game.xml
index b18bc9e7ee..9b172b6871 100644
--- a/Source/Android/app/src/main/res/layout/card_game.xml
+++ b/Source/Android/app/src/main/res/layout/card_game.xml
@@ -20,7 +20,7 @@
android:id="@+id/image_game_screen"
android:layout_width="match_parent"
android:layout_height="0dp"
- android:transitionName="image_game_screen"
+ android:transitionName="image_game_screenshot"
android:layout_weight="1"
tools:src="@drawable/placeholder_screenshot"
tools:scaleType="centerCrop"/>
diff --git a/Source/Android/app/src/main/res/transition/change_image_transform.xml b/Source/Android/app/src/main/res/transition/change_image_transform.xml
new file mode 100644
index 0000000000..3ee92bd7c4
--- /dev/null
+++ b/Source/Android/app/src/main/res/transition/change_image_transform.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<transitionSet>
+ <changeImageTransform/>
+</transitionSet> \ No newline at end of file
diff --git a/Source/Android/app/src/main/res/values/styles.xml b/Source/Android/app/src/main/res/values/styles.xml
index 98cf984807..dc81c173a7 100644
--- a/Source/Android/app/src/main/res/values/styles.xml
+++ b/Source/Android/app/src/main/res/values/styles.xml
@@ -7,6 +7,18 @@
<item name="colorPrimary">@color/dolphin_blue</item>
<!-- darker variant for the status bar and contextual app bars -->
<item name="colorPrimaryDark">@color/dolphin_blue_dark</item>
+
+ <!--enable window content transitions
+ <item name="android:windowContentTransitions">true</item>
+
+ &lt;!&ndash; specify enter and exit transitions &ndash;&gt;
+ <item name="android:windowEnterTransition">@android:transition/fade</item>
+ <item name="android:windowExitTransition">@android:transition/fade</item>
+
+ &lt;!&ndash; specify shared element transitions &ndash;&gt;
+ <item name="android:windowSharedElementEnterTransition">@transition/change_image_transform</item>
+ <item name="android:windowSharedElementExitTransition">@transition/change_image_transform</item>
+-->
</style>
<!-- Same as above, but use default action bar, and mandate margins. -->
@@ -66,6 +78,19 @@
<item name="colorPrimary">@color/dolphin_blue</item>
<item name="colorPrimaryDark">@color/dolphin_blue_dark</item>
<item name="android:windowTranslucentNavigation">true</item>
+
+ <!-- enable window content transitions -->
+ <item name="android:windowContentTransitions">true</item>
+
+ <!-- specify enter and exit transitions -->
+ <item name="android:windowEnterTransition">@android:transition/explode</item>
+ <item name="android:windowExitTransition">@android:transition/explode</item>
+
+ <!-- specify shared element transitions -->
+ <item name="android:windowSharedElementEnterTransition">@transition/change_image_transform
+ </item>
+ <item name="android:windowSharedElementExitTransition">@transition/change_image_transform
+ </item>
</style>
<!-- Inherit from the Base Dolphin Emulation Theme-->
@@ -81,7 +106,6 @@
<item name="colorAccent">@color/dolphin_accent_wiiware</item>
</style>
-
<!-- Hax to make Tablayout render icons -->
<style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab">
<item name="textAllCaps">false</item>