Segui exatamente o mesmo código que o da aula, entretanto, não aparece o pássaro (bolinha vermelha).
Segue abaixo o meu código:
MainActivity
public class MainActivity extends AppCompatActivity {
@BindView(R.id.container) FrameLayout container;
private Game game;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
game = new Game(this);
container.addView(game);
}
@Override
protected void onResume() {
super.onResume();
this.game.inicia(); //começo o jogo
new Thread(game).run();
}
@Override
protected void onPause() {
super.onPause();
this.game.pausa();
}
}
Game.java
public class Game extends SurfaceView implements Runnable{
private boolean isRunning = true;
private SurfaceHolder holder = getHolder();
private Passaro passaro;
public Game(Context context) {
super(context);
inicializaElementos();
}
private void inicializaElementos() {
passaro = new Passaro();
}
@Override
public void run() {
while(isRunning){
if (!holder.getSurface().isValid()) continue;
Canvas canvas = holder.lockCanvas();
//desenho e gerenciamento dos componentes do jogo
passaro.desenhaNo(canvas);
passaro.cai();
holder.unlockCanvasAndPost(canvas); //faz o canvas aparecer na tela (os componentes criados)
}
}
public void inicia() {
isRunning = true;
}
public void pausa() {
isRunning = false;
}
}
Passaro.java
public class Passaro {
private static final int X = 100;
private static final int RAIO = 50;
private static final Paint VERMELHO = Cores.getCorDoPassaro();
private int altura;
public Passaro() {
this.altura = 100;
}
public void desenhaNo(Canvas canvas) {
canvas.drawCircle(X, altura, RAIO, VERMELHO);
}
public void cai() {
this.altura += 5;
}
}