Android Dev Notes - 2 - 为View添加按键事件以及Activity跳转

    技术2022-05-20  50

    添加按键控制,和视图响应,算好视图逻辑后,使用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我来了!

     

     


    最新回复(0)