私はアンドロイドが初めてで、しばらくの間アプリケーションに苦労しています。私が作成した迷路タイプのゲームがあります。メイン アクティビティは、スプライトと迷路が描画される surfaceView を作成するだけのゲームを開始するための小さな宣伝文句とボタンを含むスプラッシュ スクリーンから始まります。ここで、最初の問題に遭遇します。何らかの理由で、アプリがスマートフォンの CPU の約 50% を使用しています。サーフェス ビューの onDraw メソッドで、画面上に四角形を繰り返し描画していることが原因である可能性があると思います。
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
// draws the blocks and the droid sprite
for (int i = 0; i < blocks.size(); i++) {
MapBlock piece = blocks.get(i);
canvas.drawRect(piece.getBlock(), piece.getColor());
canvas.drawRect(getRectWithinRect(piece.getBlock()), piece.getInnerRectColor());
}
droid.draw(canvas);
}
描画コードを移動するか、迷路が画面にとどまらないようにします。これを行うより良い方法はありますか?正しい場所でそれを行っているかどうか、100% 確信が持てません。
2 番目の問題は、ユーザーが勝ったときに発生します。勝つと、次を使用してアクティビティを変更します。
Intent intent = new Intent();
intent.setClass(getContext(), FinishActivity.class);
intent.putExtra("code", 1);
((Activity)getContext()).startActivity(intent);
切り替えは問題ないようです。「勝った」というテキストと終了するためのボタンだけを持つアクティビティに切り替えます。onDestroy と onStop 以外のクラスの唯一のコードは次のとおりです。
public class FinishActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("tga", "made it herE!");
requestWindowFeature(Window.FEATURE_NO_TITLE);
// making it full screen
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.finish);
}
新しい画面のどこかをタップするとアプリがクラッシュし、終了ボタンが反応しなくなります。私は何を間違っていますか?