編輯:關於Android編程
@Override public boolean dispatchTouchEvent(MotionEvent event) { // TODO Auto-generated method stub return super.dispatchTouchEvent(event); } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub return super.onTouchEvent(event); }而能做為容器的類如ViewGroup以及繼承它的類會有這幾個函數:
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub return super.onInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub return super.onTouchEvent(event); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub return super.dispatchTouchEvent(ev); }現在我們就分別來重寫這幾個函數分別走一遍流程,讓我們更能清楚的看到android的touch事件是怎麼傳遞的。我們來重寫一下這兩類的方法。重寫一個TextView
public class MyTextView extends TextView{ private final String TAG = MyTextView.class.getSimpleName(); public MyTextView(Context context) { super(context); } @Override public boolean dispatchTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: Log.d(TAG, TAG + "dispatchTouchEvent+ACTION_DOWN"); break; case MotionEvent.ACTION_POINTER_DOWN: Log.d(TAG, TAG + "dispatchTouchEvent+ACTION_POINTER_DOWN"); break; case MotionEvent.ACTION_POINTER_UP: Log.d(TAG, TAG + "dispatchTouchEvent+ACTION_POINTER_UP"); break; case MotionEvent.ACTION_MOVE: Log.d(TAG, TAG + "dispatchTouchEvent+ACTION_MOVE"); break; case MotionEvent.ACTION_UP: Log.d(TAG, TAG + "dispatchTouchEvent+ACTION_UP"); break; } return super.dispatchTouchEvent(event); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: Log.d(TAG, TAG + "onTouchEvent+ACTION_DOWN"); break; case MotionEvent.ACTION_POINTER_DOWN: Log.d(TAG, TAG + "onTouchEvent+ACTION_POINTER_DOWN"); break; case MotionEvent.ACTION_POINTER_UP: Log.d(TAG, TAG + "onTouchEvent+ACTION_POINTER_UP"); break; case MotionEvent.ACTION_MOVE: Log.d(TAG, TAG + "onTouchEvent+ACTION_MOVE"); break; case MotionEvent.ACTION_UP: Log.d(TAG, TAG + "onTouchEvent+ACTION_UP"); break; } return super.onTouchEvent(event); } }然後我們再重寫一個LinearLayout
public class MyLinearLayout extends LinearLayout { private final String TAG = MyLinearLayout.class.getSimpleName(); public MyLinearLayout(Context context) { super(context); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: Log.d(TAG, TAG + "onInterceptTouchEvent+ACTION_DOWN"); break; case MotionEvent.ACTION_POINTER_DOWN: Log.d(TAG, TAG + "onInterceptTouchEvent+ACTION_POINTER_DOWN"); break; case MotionEvent.ACTION_POINTER_UP: Log.d(TAG, TAG + "onInterceptTouchEvent+ACTION_POINTER_UP"); break; case MotionEvent.ACTION_MOVE: Log.d(TAG, TAG + "onInterceptTouchEvent+ACTION_MOVE"); break; case MotionEvent.ACTION_UP: Log.d(TAG, TAG + "onInterceptTouchEvent+ACTION_UP"); break; } return super.onInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: Log.d(TAG, TAG + "onTouchEvent+ACTION_DOWN"); break; case MotionEvent.ACTION_POINTER_DOWN: Log.d(TAG, TAG + "onTouchEvent+ACTION_POINTER_DOWN"); break; case MotionEvent.ACTION_POINTER_UP: Log.d(TAG, TAG + "onTouchEvent+ACTION_POINTER_UP"); break; case MotionEvent.ACTION_MOVE: Log.d(TAG, TAG + "onTouchEvent+ACTION_MOVE"); break; case MotionEvent.ACTION_UP: Log.d(TAG, TAG + "onTouchEvent+ACTION_UP"); break; } return super.onTouchEvent(event); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: Log.d(TAG, TAG + "dispatchTouchEvent+ACTION_DOWN"); break; case MotionEvent.ACTION_POINTER_DOWN: Log.d(TAG, TAG + "dispatchTouchEvent+ACTION_POINTER_DOWN"); break; case MotionEvent.ACTION_POINTER_UP: Log.d(TAG, TAG + "dispatchTouchEvent+ACTION_POINTER_UP"); break; case MotionEvent.ACTION_MOVE: Log.d(TAG, TAG + "dispatchTouchEvent+ACTION_MOVE"); break; case MotionEvent.ACTION_UP: Log.d(TAG, TAG + "dispatchTouchEvent+ACTION_UP"); break; } return super.dispatchTouchEvent(ev); } }
public class TestActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyLinearLayout layout = new MyLinearLayout(this); MyTextView myTextView = new MyTextView(this); myTextView.setText("touch event"); layout.addView(myTextView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); setContentView(layout); } }我們來看看log
把github上的PagerSlidingTabStrip稍作修改: tab的文字顏色選中變色(原版文字不變色) 栗子:http://download.csdn.ne
RatingBar介紹 RatingBar作為評分組件,它在實現打分功能的時候確實很方便,並結合了手勢觸摸事件;RatingBar 的實質是 ProgressBar ,可
在PC上,如果我們誤刪了圖片或其他文件,都能通過回收站找回,從而避免重要信息的遺失。那麼,我們如何才能為Android手機也添加個回收站?此外,像微信、QQ
本文提到的所有數字模型制作,全部是用3D MAX建立模型,即使是不同的驅動引擎,對模型的要求基本是相同的。當一個VR模型制作完成時,它所包含的基本內容包括場景尺寸、單位,