felgamedev

SurfaceView Basic Setup

Sep 7th, 2015
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.88 KB | None | 0 0
  1. package com.********.surfaceviewtest.Screen;
  2.  
  3. import android.content.Context;
  4. import android.graphics.Canvas;
  5. import android.graphics.Color;
  6. import android.graphics.Paint;
  7. import android.graphics.Typeface;
  8. import android.media.MediaPlayer;
  9. import android.util.Log;
  10. import android.view.MotionEvent;
  11. import android.view.SurfaceHolder;
  12. import android.view.SurfaceView;
  13. import android.view.View;
  14.  
  15. import com.adanoidz.surfaceviewtest.Audio.Audio;
  16.  
  17. public class Screen extends SurfaceView implements Runnable, View.OnTouchListener {
  18.     Thread gameLoop;
  19.     SurfaceHolder holder;
  20.     Canvas canvas;
  21.     volatile boolean running;
  22.     final double fps = 60.0;
  23.     double averageFPS = 0.0;
  24.     double frameLength = 1000 / fps;
  25.     Context context;
  26.     Paint paint = new Paint();
  27.     MediaPlayer mp;
  28.  
  29.  
  30.     public Screen(Context context) {
  31.         super(context);
  32.         this.context = context;
  33.         setOnTouchListener(this);
  34.         holder = getHolder();
  35.         paint.setColor(Color.rgb(255, 255, 255));
  36.         paint.setTypeface(Typeface.DEFAULT);
  37.  
  38.         // Assign context to audio streams.
  39.         Audio.context = this.context;
  40.     }
  41.  
  42.     public void run() {
  43.         long deltaTime;
  44.         long lastFrame = System.currentTimeMillis();
  45.         int counter = 0;
  46.         long deltaElapsed = 0;
  47.         if (Audio.mediaPlayer == null) {
  48.             Audio.mediaPlayer = Audio.createMusic("media1.ogg");
  49.             Audio.mediaPlayer.start();
  50.             Log.e("Media", "MP is " + Audio.mediaPlayer.toString());
  51.         }
  52.  
  53.         while (running) {
  54.             deltaTime = System.currentTimeMillis() - lastFrame;
  55.             lastFrame = System.currentTimeMillis();
  56.  
  57.             if (!holder.getSurface().isValid()) {
  58.                 continue;
  59.             }
  60.  
  61.             update();
  62.             render();
  63.             /*counter++;
  64.             deltaElapsed += deltaTime;
  65.             if(counter >= 60){
  66.                 averageFPS = deltaElapsed / frameLength;
  67.                 counter = 0;
  68.                 deltaElapsed = 0;
  69.             } */
  70.         }
  71.     }
  72.  
  73.     private void update() {
  74.     }
  75.  
  76.     private void render() {
  77.         canvas = holder.lockCanvas();
  78.         if (Audio.mediaPaused) {
  79.             canvas.drawRGB(125, 125, 125);
  80.         } else {
  81.             canvas.drawRGB(0, 0, 0);
  82.         }
  83.         //canvas.drawText("Set FPS: " + fps, 10, 10, paint);
  84.         //canvas.drawText("Current FPS: " + averageFPS, 10, 30, paint);
  85.         holder.unlockCanvasAndPost(canvas);
  86.     }
  87.  
  88.     public void onResume() {
  89.         running = true;
  90.         gameLoop = new Thread(this);
  91.         Audio.onResume();
  92.         gameLoop.start();
  93.     }
  94.  
  95.     public void onPause() {
  96.         running = false;
  97.         Audio.onPause();
  98.         if (gameLoop != null) {
  99.             try {
  100.                 gameLoop.join();
  101.                 return;
  102.             } catch (Exception e) {
  103.                 // Retry
  104.             }
  105.         }
  106.     }
  107.  
  108.  
  109.     @Override
  110.     public boolean onTouch(View v, MotionEvent event) {
  111.         int action = event.getAction();
  112.  
  113.         switch (action) {
  114.             case MotionEvent.ACTION_DOWN:
  115.                 break;
  116.             case MotionEvent.ACTION_UP:
  117.                 if (!Audio.mediaPaused) {
  118.                     Audio.setMediaPaused(true);
  119.                 } else {
  120.                     Audio.setMediaPaused(false);
  121.                 }
  122.                 break;
  123.         }
  124.         return true;
  125.     }
  126.  
  127.     public void onStop(boolean isFinishing) {
  128.         Audio.onStop(isFinishing);
  129.     }
  130. }
Advertisement
Add Comment
Please, Sign In to add comment