@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:case MotionEvent.ACTION_MOVE:mXCross = event.getX();mCrossEnabled = true;// 重绘if(myThread!=null && myThread.myHandler != null) {myThread.myHandler.sendEmptyMessage(0);}// Log.e("on mXCross,mYCross==",mXCross + "," + mYCross);break;case MotionEvent.ACTION_UP :mXCross = -1f;mCrossEnabled = false;// 重绘if(myThread!=null && myThread.myHandler != null) {myThread.myHandler.sendEmptyMessage(0);}break;}return true;}
// 线程内部类class MyThread extends Thread {private SurfaceHolder holder;private StockDrawWave drawWave;MyHandler myHandler;// 用户子线程绘制UIpublic MyThread(SurfaceHolder holder, StockDrawWave drawWave) {this.holder = holder;this.drawWave = drawWave;}class MyHandler extends Handler {@Overridepublic void handleMessage(Message msg) {drawTimeChar();// 以后刷新时都直接执行绘制方法}}
@Overridepublic void run() {// 此处为初始化,第一次绘制时运行Looper.prepare();// Looper与Thread绑定myHandler = new MyHandler();// 与Looper绑定drawTimeChar();Looper.loop();// 处理消息}
@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {if (myThread != null) {myThread.isRun = false;myThread.myHandler.getLooper().quit();// 终止looper循环,让线程可以被回收myThread = null;}}
原文:http://www.cnblogs.com/chenchengzhi/p/4915230.html