first.
This commit is contained in:
74
android/src/java/advent/core/SplashActivity.java
Normal file
74
android/src/java/advent/core/SplashActivity.java
Normal file
@@ -0,0 +1,74 @@
|
||||
package advent.core;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.util.Log;
|
||||
|
||||
import clojure.lang.Symbol;
|
||||
import clojure.lang.Var;
|
||||
import clojure.lang.RT;
|
||||
|
||||
import advent.core.R;
|
||||
|
||||
public class SplashActivity extends Activity {
|
||||
|
||||
private static boolean firstLaunch = true;
|
||||
private static String TAG = "Splash";
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle bundle) {
|
||||
super.onCreate(bundle);
|
||||
|
||||
if (firstLaunch) {
|
||||
firstLaunch = false;
|
||||
setupSplash();
|
||||
loadClojure();
|
||||
} else {
|
||||
proceed();
|
||||
}
|
||||
}
|
||||
|
||||
public void setupSplash() {
|
||||
setContentView(R.layout.splashscreen);
|
||||
|
||||
TextView appNameView = (TextView)findViewById(R.id.splash_app_name);
|
||||
appNameView.setText(R.string.app_name);
|
||||
|
||||
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.splash_rotation);
|
||||
ImageView circleView = (ImageView)findViewById(R.id.splash_circles);
|
||||
circleView.startAnimation(rotation);
|
||||
}
|
||||
|
||||
public void proceed() {
|
||||
startActivity(new Intent("advent.core.MAIN"));
|
||||
finish();
|
||||
}
|
||||
|
||||
public void loadClojure() {
|
||||
new Thread(new Runnable(){
|
||||
@Override
|
||||
public void run() {
|
||||
Symbol CLOJURE_MAIN = Symbol.intern("neko.init");
|
||||
Var REQUIRE = RT.var("clojure.core", "require");
|
||||
REQUIRE.invoke(CLOJURE_MAIN);
|
||||
|
||||
Var INIT = RT.var("neko.init", "init");
|
||||
INIT.invoke(SplashActivity.this.getApplication());
|
||||
|
||||
try {
|
||||
Class.forName("advent.core.AndroidLauncher");
|
||||
} catch (ClassNotFoundException e) {
|
||||
Log.e(TAG, "Failed loading AndroidLauncher", e);
|
||||
}
|
||||
|
||||
proceed();
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user