2011-2-14 | Android Handler

    技术2025-07-13  14

    2010-2-14 关键词:Android Handler
    如下的代码实现一个Iphone 上的一个通过按backspace键后,数字过多消除的按钮事件。事件的原理如下,事件要的效果是这样的,当长按消除按钮后,数字会慢慢消除,当消除5个字符后继续消除的话消除速度会增快。通过这份代码可以帮助我们较好的初识Handler的工作机制。   package com.william.handlertest; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class HandlerTest extends Activity implements Runnable{      private EditText content = null;      private Button backspace = null;      private boolean isStop = false;      private Handler mHandler = null;      private class BackspaceOnTouchListener implements Button.OnTouchListener{         @Override          public boolean onTouch(View v, MotionEvent event) {              switch(event.getAction()){              case MotionEvent.ACTION_DOWN :                 isStop = true;                 mHandler = getHandler(content);                  new Thread(HandlerTest. this).start();                  break;              case MotionEvent.ACTION_UP :                 isStop = false;                  break;              default :                  break;             }              return false;         }     }     @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);         setContentView(R.layout.main);         content = (EditText) findViewById(R.id.content);         content.setCursorVisible(false);         backspace = (Button) findViewById(R.id.backspace);         backspace.setOnTouchListener( new BackspaceOnTouchListener());     }      private Handler getHandler( final TextView content){          return new Handler(){             @Override              public void handleMessage(Message msg) {                 content.setText((String)msg.obj);                  super.handleMessage(msg);             }         };     }     @Override      public void run() {          try{              int i = 0;              do{                 i ++;                 Thread.sleep((i > 5 ? 100 : 500));                 String contentStr = this.content.getText().toString();                  if(contentStr.length() == 0){                      break;                 }                 contentStr = contentStr.substring( 0, contentStr.length() - 1);                 Message msg = mHandler.obtainMessage();                 msg.obj =contentStr;                 msg.sendToTarget();             } while(isStop);         } catch(Exception e){             e.printStackTrace();         }     } }       代码参考了如下博文,在其消除至无字符时异常退出的非完美代码上进行了修改。      http://www.cnblogs.com/TerryBlog/archive/2010/08/25/1808445.html

    通过Wiz发布

    最新回复(0)