summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
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/main/java/org
parent0679e43efec8e9ca8dc690ea2a59bf7c1d045f7c (diff)
Android: Show transition animation while game loads.
Diffstat (limited to 'Source/Android/app/src/main/java/org')
-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
2 files changed, 53 insertions, 4 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());
}
/**