Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class TestSurfaceView extends SurfaceView implements SurfaceHolder.Callback{
- private DrawThread drawThread;
- public TestSurfaceView(Context context) {
- super(context);
- getHolder().addCallback(this);
- }
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
- }
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- drawThread = new DrawThread(getContext(), getHolder());
- drawThread.start();
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder holder) {
- drawThread.requestStop();
- boolean retry = true;
- while(retry){
- try{
- drawThread.join();
- retry = false;
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- drawThread.set(event.getX(), event.getY(), 0);
- return super.onTouchEvent(event);
- }
- }
- class DrawThread extends Thread{
- private SurfaceHolder surfaceHolder;
- float x = -100000, y = -100000, radius = 0;
- private volatile boolean running = true;
- public void set(float x, float y, float radius){
- this.x = x;
- this.y = y;
- this.radius = radius;
- }
- public DrawThread(Context context, SurfaceHolder surfaceHolder){
- this.surfaceHolder = surfaceHolder;
- }
- public void requestStop() {
- running = false;
- }
- @Override
- public void run() {
- Paint paint = new Paint();
- paint.setColor(Color.YELLOW);
- while (running){
- Canvas canvas = surfaceHolder.lockCanvas();
- if(canvas != null){
- try {
- canvas.drawColor(Color.BLUE);
- canvas.drawCircle(x,y,radius,paint);
- }
- finally {
- surfaceHolder.unlockCanvasAndPost(canvas);
- }
- }
- radius += 5;
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement