編輯:關於Android編程
我們可以通過重寫onTouchEvent方法來處理諸如down move up的消息:
public class TestButton extends Button { public TestButton(Context context) { super(context); // TODO Auto-generated constructor stub } public TestButton(Context context, AttributeSet attributeSet) { super(context, attributeSet); // TODO Auto-generated constructor stub } @Override public boolean onTouchEvent(MotionEvent event) { boolean value = super.onTouchEvent(event); System.out.println("super.onTouchEvent: " + value+ " event: " + event.getAction()); return value; }也可以通過實現OnTouchListener的接口,然後設置TestButton的onTouchListener可以達到同樣的目的
class OnTouchListenerTest implements View.OnTouchListener{ @Override public boolean onTouch(View v, MotionEvent event) { return false; } }
TestButton b = (TestButton)findViewById(R.id.button); OnTouchListenerTest listener = new OnTouchListenerTest(); b.setOnTouchListener(listener);但上述兩種監聽有什麼區別呢?
先看一下Android源碼中對於View中dispatchTouchEvent的實現:
public boolean dispatchTouchEvent(MotionEvent event){ ... ... if(onFilterTouchEventForSecurity(event)){ ListenerInfo li = mListenerInfo; if(li != null && li.mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED && li.mOnTouchListener.onTouch(this, event)) { return true; } if(onTouchEvent(event)){ return true; } } ... ... return false; }
表示此次事件已經被消費了,那onTouchEvent是接收不到消息的。
因為Button的performClick是利用onTouchEvent實現,假若onTouchEvent沒有被調用到,那麼Button的Click事件也無法響應。
綜合來講:
onTouchListener的onTouch方法優先級比onTouchEvent高,會先觸發。
假如onTouch方法返回false會接著觸發onTouchEvent,反之onTouchEvent方法不會被調用。
內置諸如click事件的實現等等都基於onTouchEvent,假如onTouch返回true,這些事件將不會被觸發。
本文詳細分析了Android中Service服務。分享給大家供大家參考,具體如下:一、Service簡介Service是Android中實現程序後台運行的解決方案,適用於
第1節 概述在安卓系統中,為了界面或者其中的組件在切換、改變的時候顯得自然生動、具有流動性的美感,就給它們添加了動畫的效果。例如圖片切換的時候,前一張圖片淡出,後一張圖片
如題,在Android中按鈕的點擊事件有四種寫法,如下圖。界面為四個Button+一個TextView+一個ImageViewactivity_main布局文件如下:&n
版本:1.0日期:2014.7.24版權:© 2014 kince 轉載注明出處 在有的應用中可能需要設置一些標簽來方便用去去查詢某些信息,比如手機助手或