• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.skia.skottie;
2 
3 import android.app.Activity;
4 import android.content.Intent;
5 import android.os.Bundle;
6 import android.view.Window;
7 import android.view.WindowManager;
8 
9 import com.airbnb.lottie.LottieAnimationView;
10 import com.airbnb.lottie.LottieDrawable;
11 import com.airbnb.lottie.RenderMode;
12 
13 public class PerfActivity extends Activity {
14 
15     int rawAssets[] = {
16             R.raw.star, R.raw.movie_loading, R.raw.uk,  R.raw.white_material_wave_loading,
17             R.raw.check_animation, R.raw.confetti, R.raw.gears,
18             R.raw.hand_sanitizer, R.raw.heart_preloader, R.raw.i_was_scared_after_that_brouhaha,
19             R.raw.im_thirsty, R.raw.true_will, R.raw.workout_monkey_stay_healthy,
20             R.raw.ripple_loading_animation, R.raw.signature, R.raw.asdasd, R.raw.celebration,
21             R.raw.check
22     };
23 
24     @Override
onCreate(Bundle savedInstanceState)25     protected void onCreate(Bundle savedInstanceState) {
26         //Remove title bar
27         this.requestWindowFeature(Window.FEATURE_NO_TITLE);
28 
29         //Remove notification bar
30         this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
31                 WindowManager.LayoutParams.FLAG_FULLSCREEN);
32 
33         super.onCreate(savedInstanceState);
34         // Run activity with:
35         // adb shell am start -n org.skia.skottie/.PerfActivity --ei renderer 0 --ei file 0
36         // renderer is 0 to 2, file is 0 to 14
37         Intent intent = getIntent();
38         int renderer = intent.getIntExtra("renderer", 0);
39         int file = intent.getIntExtra("file", 0);
40         if (file < 0 || file >= rawAssets.length) {
41             return;
42         }
43         switch (renderer) {
44             case 0:
45                 // render with airbnb hardware lottie player
46                 runLottie(rawAssets[file], true);
47                 break;
48             case 1:
49                 // render with airbnb software lottie player
50                 runLottie(rawAssets[file], false);
51                 break;
52             case 2:
53                 // render with skottie player
54                 runSkottie(rawAssets[file]);
55                 break;
56             default:
57                 break;
58         }
59 
60     }
61 
runSkottie(int id)62     void runSkottie(int id) {
63         SkottieView view = new SkottieView(this);
64         view.setSource(getResources().openRawResource(id));
65         view.start();
66         setContentView(view);
67     }
68 
runLottie(int id, boolean useHardware)69     void runLottie(int id, boolean useHardware) {
70         LottieAnimationView lottie = new LottieAnimationView(this);
71         lottie.setAnimation(id);
72         if (useHardware) {
73             lottie.setRenderMode(RenderMode.HARDWARE);
74         } else {
75             lottie.setRenderMode(RenderMode.SOFTWARE);
76         }
77         lottie.setRepeatMode(LottieDrawable.RESTART);
78         lottie.setRepeatCount(LottieDrawable.INFINITE);
79         lottie.playAnimation();
80         setContentView(lottie);
81     }
82 }
83