OSDN Git Service

Stop octopus animation when paused
authorDan Sandler <dsandler@android.com>
Wed, 18 Oct 2017 20:06:28 +0000 (16:06 -0400)
committerDaniel Sandler <dsandler@android.com>
Mon, 23 Oct 2017 20:48:33 +0000 (20:48 +0000)
Bug: 65597560
Test: 1. launch easter egg
         adb shell am start \
           -a android.intent.action.MAIN \
           -c com.android.internal.category.PLATLOGO
      2. go home
         adb shell input keyevent 3
      3. ensure octo is not consuming CPU
         adb shell top

Change-Id: I5e95e56ddb212f951b461264d3af40682d08fee3

packages/EasterEgg/src/com/android/egg/octo/Ocquarium.java

index bbbdf80..8a06cc6 100644 (file)
@@ -26,6 +26,7 @@ import com.android.egg.R;
 
 public class Ocquarium extends Activity {
     ImageView mImageView;
+    private OctopusDrawable mOcto;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -43,10 +44,9 @@ public class Ocquarium extends Activity {
         bg.addView(mImageView, new FrameLayout.LayoutParams(
                 ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
 
-        final OctopusDrawable octo = new OctopusDrawable(getApplicationContext());
-        octo.setSizePx((int) (OctopusDrawable.randfrange(40f,180f) * dp));
-        mImageView.setImageDrawable(octo);
-        octo.startDrift();
+        mOcto = new OctopusDrawable(getApplicationContext());
+        mOcto.setSizePx((int) (OctopusDrawable.randfrange(40f,180f) * dp));
+        mImageView.setImageDrawable(mOcto);
 
         mImageView.setOnTouchListener(new View.OnTouchListener() {
             boolean touching;
@@ -54,24 +54,36 @@ public class Ocquarium extends Activity {
             public boolean onTouch(View view, MotionEvent motionEvent) {
                 switch (motionEvent.getActionMasked()) {
                     case MotionEvent.ACTION_DOWN:
-                        if (octo.hitTest(motionEvent.getX(), motionEvent.getY())) {
+                        if (mOcto.hitTest(motionEvent.getX(), motionEvent.getY())) {
                             touching = true;
-                            octo.stopDrift();
+                            mOcto.stopDrift();
                         }
                         break;
                     case MotionEvent.ACTION_MOVE:
                         if (touching) {
-                            octo.moveTo(motionEvent.getX(), motionEvent.getY());
+                            mOcto.moveTo(motionEvent.getX(), motionEvent.getY());
                         }
                         break;
                     case MotionEvent.ACTION_UP:
                     case MotionEvent.ACTION_CANCEL:
                         touching = false;
-                        octo.startDrift();
+                        mOcto.startDrift();
                         break;
                 }
                 return true;
             }
         });
     }
+
+    @Override
+    protected void onPause() {
+        mOcto.stopDrift();
+        super.onPause();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mOcto.startDrift();
+    }
 }