<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Android自助餐之點擊事件傳遞 源碼(含圖)[下載](http://download.csdn.net/detail/xmh19936688/9372620) ### 看圖分析 ![這里寫圖片描述](https://box.kancloud.cn/2016-03-02_56d65606d6693.jpg "") 圖中的Out是ViewGroup的一個子類,如RelativeLayout等。看完圖基本就不用分析了 ### 來點代碼 先看layout。MyRelativeLayout只是繼承RelativeLayout并重寫`dispatchTouchEvent`、`onTouchEvent`、`onInterceptTouchEvent`三個方法。MyView也只是重寫了`dispatchTouchEvent`、`onTouchEvent`兩個方法。 ~~~ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activity.MainActivity"> <com.xmh.toucheventdemo.view.MyRelativeLayout android:id="@+id/out" android:tag="out" android:layout_width="300dp" android:layout_height="400dp" android:layout_centerInParent="true" android:background="@color/colorAccent" > <com.xmh.toucheventdemo.view.MyView android:id="@+id/view" android:tag="view" android:layout_width="100dp" android:layout_height="100dp" android:layout_centerInParent="true" android:background="#ffffff" /> </com.xmh.toucheventdemo.view.MyRelativeLayout> </RelativeLayout> ~~~ 父控件MyRelativeLayout.java。個人習慣重寫View時重寫三個構造方法。 ~~~ public class MyRelativeLayout extends RelativeLayout{ public MyRelativeLayout(Context context) { super(context); } public MyRelativeLayout(Context context, AttributeSet attrs) { super(context, attrs); } public MyRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean dispatchTouchEvent(MotionEvent event) { Log.e("xmh", getTag()+"-dispatch:" + TouchEventUtil.getTouchActionName(event)); return super.dispatchTouchEvent(event); // return true; } @Override public boolean onTouchEvent(MotionEvent event) { Log.e("xmh", getTag()+"-touch:" + TouchEventUtil.getTouchActionName(event)); return super.onTouchEvent(event); } @Override public boolean onInterceptTouchEvent(MotionEvent event) { Log.e("xmh", getTag()+"-intercept:" + TouchEventUtil.getTouchActionName(event)); return super.onInterceptTouchEvent(event); // return true; } } ~~~ 子控件MyView.java。MyView跟MyRelativeLayout大同小異,但還是把代碼貼上吧。 ~~~ public class MyView extends View{ public MyView(Context context) { super(context); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); } public MyView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean dispatchTouchEvent(MotionEvent event) { Log.e("xmh", getTag() + "-dispatch:" + TouchEventUtil.getTouchActionName(event)); return super.dispatchTouchEvent(event); // return true; } @Override public boolean onTouchEvent(MotionEvent event) { Log.e("xmh", getTag() + "-touch:" + TouchEventUtil.getTouchActionName(event)); return super.onTouchEvent(event); // return true; } } ~~~ 上面代碼中的TouchEventUtil是方便打Log的,看代碼就明白了。 ~~~ public class TouchEventUtil { public static String getTouchActionName(MotionEvent event) { int actionId=event.getAction(); String actionName = "Unknow:id=" + actionId; switch (actionId) { case MotionEvent.ACTION_DOWN: actionName = "ACTION_DOWN"; break; case MotionEvent.ACTION_MOVE: actionName = "ACTION_MOVE"; break; case MotionEvent.ACTION_UP: actionName = "ACTION_UP"; break; case MotionEvent.ACTION_CANCEL: actionName = "ACTION_CANCEL"; break; case MotionEvent.ACTION_OUTSIDE: actionName = "ACTION_OUTSIDE"; break; } return actionName; } } ~~~ 最后是MainActivity.java ~~~ public class MainActivity extends AppCompatActivity { @Bind(R.id.out)RelativeLayout rlOut; @Bind(R.id.view)View vUp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @Override public boolean dispatchTouchEvent(MotionEvent event) { Log.e("xmh","activity-dispatch:"+ TouchEventUtil.getTouchActionName(event)); return super.dispatchTouchEvent(event); } @Override public boolean onTouchEvent(MotionEvent event) { Log.e("xmh","activity-touch:"+ TouchEventUtil.getTouchActionName(event)); return super.onTouchEvent(event); } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看