我是 android 新手,我一直在为我的应用程序苦苦挣扎。我创建了一个迷宫类型的游戏。主要活动从一个启动屏幕开始,该屏幕有一个小简介和一个用于启动游戏的按钮,它只是创建一个在其上绘制精灵和迷宫的表面视图。这是我遇到的第一个问题。由于某种原因,我的应用程序占用了我手机上大约 50% 的 CPU。我认为这可能是因为我在表面视图的 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% 确定我是否在正确的地方做这件事。
我的第二个问题发生在用户获胜时。获胜后,我使用以下方法更改活动:
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);
}
当您点击新屏幕的任何部分并且退出按钮没有响应时,应用程序会崩溃。我究竟做错了什么?