1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
package lepioo.canvastest;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class CanvasSurface extends Activity {
//-- Définition d'une vue v de type EcranDessin
EcranDessin v;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//-- Création d'une view à partir de la Class SurfaceView
v = new EcranDessin(this);
//-- Indique à l'activité d'utiliser la view v
setContentView(v);
}
@Override
protected void onPause() {
super.onPause();
v.pause();
}
@Override
protected void onResume() {
super.onResume();
v.resume();
}
public class EcranDessin extends SurfaceView implements Runnable{
//--
Thread t = null;
//-- Déclaration du "Holder" utile pour les manipulations
SurfaceHolder holder;
Paint p;
//-- Drapeau de contrôle
boolean isItOk = false;
public EcranDessin(Context context) {
super(context);
Paint p = new Paint();
p.setStyle(Paint.Style.FILL);
p.setColor(Color.parseColor("#FF0000"));
//-- lancement du Holder
holder = getHolder();
System.out.println("CONSTRUCTOR");
}
public void run() {
while (isItOk==true) {
//-- On peut dessiner si le holder est disponible
if (!holder.getSurface().isValid())
continue;
//-- Définition d'un canevas, et veroullage le temps que l'on dessine dessus
Canvas c = holder.lockCanvas();
//Bitmap bille=BitmapFactory.decodeResource(getResources(),R.drawable.bille);
//c.drawBitmap(bille, 200,200, null);
c.drawRect(0,0,10,10,p);
//-- Libération du dessin
holder.unlockCanvasAndPost(c);
}
}
public void pause() {
//-- Zone de dessin indisponible
isItOk=false;
//-- Tant que on est en Pause
while (true) {
try {
t.join(); //--tente de relancer le Thread
}
catch (InterruptedException e)
{e.printStackTrace();}
break;
}
t=null;
}
public void resume() {
//-- Zone de dessin disponible
isItOk=true;
//-- On peut dessiner, donc on créé un Tread pour dessiner !
t = new Thread(this);
//-- This appele ici la method run() de la class
t.start();
}
}
} |
Partager