package com.mozz.htmlnativedemo;
import android.app.AlertDialog;
import android.app.Application;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.mozz.htmlnative.HNLog;
import com.mozz.htmlnative.HNativeEngine;
import com.mozz.htmlnative.HrefLinkHandler;
import com.mozz.htmlnative.ImageViewAdapter;
import com.mozz.htmlnative.script.ScriptRunner;
import com.mozz.htmlnative.view.BackgroundViewDelegate;
import com.squareup.leakcanary.LeakCanary;
/**
* @author Yang Tao, 17/3/1.
*/
public class DemoApplication extends Application {
private Handler mMainHandler = new Handler(Looper.getMainLooper());
@Override
public void onCreate() {
super.onCreate();
HNativeEngine.getInstance().init(this);
HNativeEngine.getInstance().debugRenderProcess();
HNativeEngine.getInstance().setImageViewAdapter(new ImageViewAdapter() {
@Override
public void setImage(String src, final BackgroundViewDelegate imageView) {
Glide.with(DemoApplication.this).load(src).asBitmap().into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap>
glideAnimation) {
Log.d("GlideTest", "onResourceReady");
imageView.setBitmap(resource);
}
});
}
});
HNativeEngine.getInstance().setHrefLinkHandler(new HrefLinkHandler() {
@Override
public void onHref(String url, View view) {
Toast.makeText(DemoApplication.this, url, Toast.LENGTH_SHORT).show();
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
}
});
HNativeEngine.registerScriptCallback(new ScriptRunner.OnScriptCallback() {
@Override
public void error(final Exception e) {
mMainHandler.post(new Runnable() {
@Override
public void run() {
new AlertDialog.Builder(DemoApplication.this).setMessage("LuaScript " +
"Wrong:\n" + e.getMessage()).setTitle("LuaSyntaxError")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
});
}
});
if (LeakCanary.isInAnalyzerProcess(this)) {
// This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process.
return;
}
LeakCanary.install(this);
}
@Override
public void onTerminate() {
super.onTerminate();
HNativeEngine.getInstance().destroy();
}
}