blob: 53daeaf756ecb5eaa32ed01a7f53f32019a56153 [file] [log] [blame]
package com.example;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
public class HelloSkiaActivity extends Activity
{
private SkiaDrawView fMainView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Makes and sets a SkiaDrawView as the only thing seen in this activity
fMainView = new SkiaDrawView(this);
setContentView(fMainView);
try {
// Load Skia and then the app shared object in this order
System.loadLibrary("skia_android");
System.loadLibrary("hello_skia_ndk");
} catch (UnsatisfiedLinkError e) {
Log.d("HelloSkia", "Link Error: " + e);
return;
}
// Set a timer that will periodically request an update of the SkiaDrawView
Timer fAnimationTimer = new Timer();
fAnimationTimer.schedule(new TimerTask() {
public void run()
{
// This will request an update of the SkiaDrawView, even from other threads
fMainView.postInvalidate();
}
}, 0, 5); // 0 means no delay before the timer starts; 5 means repeat every 5 milliseconds
}
private class SkiaDrawView extends View {
Bitmap fSkiaBitmap;
public SkiaDrawView(Context ctx) {
super(ctx);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
// Create a bitmap for skia to draw into
fSkiaBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
}
@Override
protected void onDraw(Canvas canvas) {
// Call into our C++ code that renders to the bitmap using Skia
drawIntoBitmap(fSkiaBitmap, SystemClock.elapsedRealtime());
// Present the bitmap on the screen
canvas.drawBitmap(fSkiaBitmap, 0, 0, null);
}
}
private native void drawIntoBitmap(Bitmap image, long elapsedTime);
}