我寫了一個自訂的view,裡面用handler做了一個迴圈,在迴圈的過程中,我點擊左右鍵怎麼沒有反應
我想要的結果是:迴圈列印 begin 和 handler, 當按下左右鍵是列印:Left 和 Right
我把我的工程附件上來了
請兄弟們指出原因,給出解決辦法
下面是My Code:
TestHandler 是一個activity
package cn.com.android;import android.app.Activity;import android.os.Bundle;public class TestHandler extends Activity {private ManTest test; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); test = (ManTest) findViewById(R.id.manTest); test.begin(); }}
這個是自訂View
package cn.com.android;import android.content.Context;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.view.KeyEvent;import android.view.View;public class ManTest extends View{public ManTest(Context context, AttributeSet attrs) {super(context, attrs);}public ManTest(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode ==KeyEvent.KEYCODE_DPAD_LEFT){System.out.println("KEY------> Left");}if(keyCode ==KeyEvent.KEYCODE_DPAD_RIGHT){System.out.println("KEY------> Right");}return super.onKeyDown(keyCode, event);}private RefreshHandler handler = new RefreshHandler();class RefreshHandler extends Handler { @Override public void handleMessage(Message msg) { System.out.println("Handler"); begin(); ManTest.this.invalidate(); } public void sleep(long delayMillis) { this.removeMessages(0); sendMessageDelayed(obtainMessage(0), delayMillis); } };public void begin(){System.out.println("Begin");handler.sleep(1000);}}
main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" ><cn.com.android.ManTest android:id="@+id/manTest" android:layout_width="fill_parent" android:layout_height="wrap_content" /><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /></LinearLayout>
現在已經有解決辦法了,不過感覺不應該這樣子解決的!! Java代碼
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- test.onKeyDown(keyCode, event);
- return super.onKeyDown(keyCode, event);
- }
- 已經把最新的代碼附件了!!
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {test.onKeyDown(keyCode, event);return super.onKeyDown(keyCode, event);}已經把最新的代碼附件了!!
像smaple中貪吃蛇遊戲就沒有在activity中重寫onkeydown方法
- TMAdMob.rar (32.5 KB)
- 下載次數: 15
- TaxiCall.zip (134.7 KB)
- 下載次數: 18
- HelloMapView.zip (54.9 KB)
- 下載次數: 17