2017-12-11 10 views
0

Androidで簡単なアニメーションを作りたいです。私はセットアップに基本的なJavaコードこのチュートリアルのシリーズを踏襲:フレームレートを制御することができるようにするためにAndroidでthread.sleep(long millis)が動作しない

https://www.youtube.com/watch?v=UH2OWnq7NQ4

を、私はラインthread.sleep(500);を追加しました。しかし、この行に赤で下線が引かれ、上に表示されている場合:

Unhandled exception: java.lang.interruptedException 

私は間違っていますか?ありがとうございました!

public class AnimationActivity extends SurfaceView implements Runnable { 

    Thread thread = null; 
    boolean canDraw = false; 

    Bitmap backgroundBlack; 
    Canvas canvas; 
    SurfaceHolder surfaceHolder; 

    public AnimationActivity(Context context) { 
     super(context); 
     surfaceHolder = getHolder(); 
     backgroundBlack = BitmapFactory.decodeResource(getResources(), R.drawable.background_black); 

    } 

    @Override 
    public void run() { 
     while (canDraw) { 
      if (!surfaceHolder.getSurface().isValid()) { 
       continue; 
      } 

      canvas = surfaceHolder.lockCanvas(); 
      canvas.drawBitmap(backgroundBlack,0,0, null); 

      //drawing stuff here 

      surfaceHolder.unlockCanvasAndPost(canvas); 

      thread.sleep(500) 
     } 
    } 

    public void pause() { 
     canDraw = false; 

     while (true) { 
      try { 
       thread.join(); 
       break; 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 

     thread = null; 
    } 

    public void resume() { 
     canDraw = true; 
     thread = new Thread(this); 
     thread.start(); 
    } 
} 

答えて

1

それは「動作しない」されていない - しかし、(メソッドのシグネチャで例外:InterruptedExceptionがスローされます)、それはあなたがあまりにもスローする宣言する必要がいずれかの例外:InterruptedExceptionをスローする可能性があります、またはあなたはそれをキャッチする必要があります

try { 
    Thread.sleep(500); 
} catch (InterruptedException e) { 
    e.printStackTrace(); 
} 

PS:sleepは静的メソッドであり、静的な方法で呼び出す必要があります。thread.sleepではなくThread.sleep

関連する問題