編輯:關於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服務詳解(一)
本文詳細分析了Android中Service服務。分享給大家供大家參考,具體如下:一、Service簡介Service是Android中實現程序後台運行的解決方案,適用於
動畫效果(一)-漸變動畫
第1節 概述在安卓系統中,為了界面或者其中的組件在切換、改變的時候顯得自然生動、具有流動性的美感,就給它們添加了動畫的效果。例如圖片切換的時候,前一張圖片淡出,後一張圖片
Android中按鈕的點擊事件的四種寫法
如題,在Android中按鈕的點擊事件有四種寫法,如下圖。界面為四個Button+一個TextView+一個ImageViewactivity_main布局文件如下:&n
Android 標簽控件
版本:1.0日期:2014.7.24版權:© 2014 kince 轉載注明出處 在有的應用中可能需要設置一些標簽來方便用去去查詢某些信息,比如手機助手或