Простой пример работы с SurfaceView
- -Класс MainActivity-
- package com.mycompany.myapp;
- import android.app.*;
- import android.os.*;
- import android.view.*;
- import android.widget.*;
- public class MainActivity extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // Отображаем SurfaceView
- setContentView(new mySurfaceView(this));
- }
- }
- -Класс MySurfaceView-
- package com.mycompany.myapp;
- import android.content.*;
- import android.view.*;
- public class mySurfaceView extends SurfaceView implements SurfaceHolder.Callback {
- public myThread t;
- public mySurfaceView(Context c) {
- super(c);
- //добавляем Runnable-объект mySyrfaceView в очередь
- getHolder().addCallback(this);
- }
- /** Метод вызывается при создании области для рисования */
- public void surfaceCreated(SurfaceHolder p1) {
- t = new myThread(getHolder());
- t.start();
- }
- /** Метод вызывается при изменении области для рисования */
- public void surfaceChanged(SurfaceHolder p1, int p2, int p3, int p4) { }
- /** Метод вызывается при разрушении области для рисования */
- public void surfaceDestroyed(SurfaceHolder p1) {
- //делаем ok=false,тем самим прекращаем бесконечный цикл в myThread
- t.ok = false;
- }
- }
- -Класс myThread-
- package com.mycompany.myapp;
- import android.graphics.*;
- import android.view.*;
- public class myThread extends Thread {
- public SurfaceHolder sh;
- public boolean ok = true;
- public Canvas c;
- public Paint p;
- public myThread(SurfaceHolder sh) {
- this.sh = sh;
- p = new Paint();
- }
- public void run() {
- p.setColor(Color.WHITE);
- while (ok) {
- long now = System.currentTimeMillis();
- //блокируем канвас, чтобы сделать отрисовку
- c = sh.lockCanvas();
- c.drawColor(Color.BLACK);
- c.drawText(now + "", 0, 10, p);
- //разблокируем канвас,и выводим результат на экран
- sh.unlockCanvasAndPost(c);
- }
- }
- }
Все примеры что мне приходилось встречать в интернетах были сложными и запутаными.Написал самый простой вариант.