添加按键控制,和视图响应,算好视图逻辑后,使用invalidate()刷新屏幕
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
int x = mXIceBall;
int y = mYIceBall;
setTile(BlANK_BLOCK,x,y);
if(keyCode == KeyEvent.KEYCODE_DPAD_UP)
{
//
}
if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN)
{
//
}
if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT)
{
//
}
if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT)
{
//
}
mXIceBall = x;
mYIceBall = y;
if(isEnd == true)
{
//TODO 添加判断游戏结束的逻辑
setTile(ICE_BALL,x,y);
this.invalidate();
}
setTile(ICE_BALL,x,y);
this.invalidate();//刷新屏幕
return super.onKeyDown(keyCode, event);
}
然后开始设置游戏结束判断的逻辑了
------------------------------------------------------------------------------------------------------------------------------------
忽然忘记怎么写按键的监听器了
贴一个上来,插播一段
Button left = (Button) findViewById(R.id.left);
left.setOnClickListener(new LeftBtnListener());
class LeftBtnListener implements OnClickListener{
@Override
public void onClick(View v) {
mSnakeView.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT,null);
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------
Dialog 一般可以通过在Activity中通过override protected Dialog onCreateDialog(int id)来实现
然后用showDialog(DIALOG1)来调用他。
当然在onCreateDialog函数中要build Dialog, 使用AlertDialog.build类构造AlertDialog, 以供onCreateDialog()调用
没人告诉我怎么在View里面调Dialog,555555~
另一种是把Activity伪装成Dialog,使用Intent来跳转。需要修改manifest中Activity的theme
<activity android:name=".ActivityDialog"
android:label = "ActivityDialog"
android:theme = "@android:style/Theme.Dialog">
</activity>
------------------------------------------------------------------------------------------------------------------------------------------------
悲剧的是问题还存在,想要挂起Dialog然后跳转到下一个Activity,使用intent是要在当前Activity中实现的,
如论在Dialog还是在View中都没有办法,startActivity。要怎么做呢?未完待续。。。。。
我现在的解决方法是override 调Activity的onKeyDown方法,经测试证明,在应用接到key event会先发给View
然后发给View所属的Activity,所以我在Activity的onKeyDown方法中进行了结束判断。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(mIceBallView.isEnd() == true)
{
Intent intent = new Intent(IceBall.this, PassDialog.class);
startActivity(intent);
}
return super.onKeyDown(keyCode, event);
}
其中PassDialog是一个Activity,它的一个属性被设成android:theme = "@android:style/Theme.Dialog"以模仿Dialog样式。
------------------------------------------------------------------------------------------------------------------------------------------------
下一步就是给游戏上Sensor了,需要进步一研究。Senor我来了!