事件分发基本实现

来源:互联网 发布:松下tda200编程软件 编辑:程序博客网 时间:2024/05/22 08:10
<com.runningsnail.studytouch.FirstFrameLayout 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"    android:background="#ff0000"    >    <com.runningsnail.studytouch.SecondRelativeLayout        android:layout_width="250dip"        android:layout_height="250dip"        android:background="#00ff00"        android:layout_gravity="center"         >        <com.runningsnail.studytouch.ThirdTextView             android:layout_width="100dip"            android:layout_height="100dip"            android:background="#0000ff"            android:layout_centerInParent="true"            />    </com.runningsnail.studytouch.SecondRelativeLayout>

</com.runningsnail.studytouch.FirstFrameLayout>

public class LogUtils {   public static String getEvent( MotionEvent event) {      String motionEvent="";      switch (event.getAction()) {      case MotionEvent.ACTION_DOWN:         motionEvent+="按下";         break;      case MotionEvent.ACTION_MOVE:         motionEvent+="滑动";         break;      case MotionEvent.ACTION_UP:         motionEvent+="离开";         break;      default:         break;      }      return motionEvent;   }   public static void printLog(Class mClass,String content,MotionEvent ev){      Log.d(mClass.getSimpleName(), String.format(content, getEvent(ev)));   }   public static void printEventLog(Class mClass,String position,boolean isDispatch, MotionEvent event){      Log.d(mClass.getSimpleName(), position+"-来一个任务<"+getEvent(event)+">:需要给分派给下一届人做吗?"+isDispatch);   }}
public class MainActivity extends ActionBarActivity {   @Override   protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.activity_main);   }   /**     * onInterceptTouchEvent  拦截事件     * dispatchTouchEvent 分派事件     * onTouchEvent 处理事件     */   @Override   public boolean dispatchTouchEvent(MotionEvent ev) {      LogUtils.printLog(getClass(), "【开发经理】来一任务<%s>:需要{分派}给下一级", ev);      return super.dispatchTouchEvent(ev);   }   @Override   public boolean onTouchEvent(MotionEvent event) {      boolean is=false;      LogUtils.printLog(getClass(), "【开发经理】自己{处理}任务<%s>:连组长都不会,算了,这任务我还是自己来吧!"+is, event);      return is;   }}

public class FirstFrameLayout extends FrameLayout {         public FirstFrameLayout(Context context, AttributeSet attrs) {      super(context, attrs);   }   @Override   public boolean dispatchTouchEvent(MotionEvent ev) {      LogUtils.printLog(getClass(), "【开发组长】来一任务<%s>:需要{分派}给下一级", ev);      return super.dispatchTouchEvent(ev);   }   @Override   public boolean onInterceptTouchEvent(MotionEvent ev) {            boolean is=false;      LogUtils.printLog(getClass(), "【开发组长】自己分派一任务<%s>:需要{拦截}吗?"+is, ev);      return is;   }   @Override   public boolean onTouchEvent(MotionEvent event) {      boolean is=true;// 开发组长设置为true,下边的人都干不了,返回给我,我处理;      LogUtils.printLog(getClass(), "【开发组长】自己{处理}任务<%s>:这任务怎么这么难,底下人都不会,还是自己干吧。可是任务能解决嘛?"+is, event);      return is;   }}

public class SecondRelativeLayout extends RelativeLayout {   public SecondRelativeLayout(Context context, AttributeSet attrs) {      super(context, attrs);   }   @Override   public boolean dispatchTouchEvent(MotionEvent ev) {      LogUtils.printLog(getClass(), "【程序员】来一任务<%s>:需要{分派}给下一级", ev);      return super.dispatchTouchEvent(ev);   }   @Override   public boolean onInterceptTouchEvent(MotionEvent ev) {      boolean is=false;      LogUtils.printLog(getClass(), "【程序员】自己分派一任务<%s>:需要{拦截}吗?"+is, ev);      return is;   }   @Override   public boolean onTouchEvent(MotionEvent event) {      boolean is=false;      LogUtils.printLog(getClass(), "【程序员】自己{处理}任务<%s>:实习生毕竟是实习生啊,还是自己干吧。可是任务能解决嘛?"+is, event);      return is;   }}

public class ThirdTextView extends TextView {   public ThirdTextView(Context context, AttributeSet attrs) {      super(context, attrs);   }   @Override   public boolean dispatchTouchEvent(MotionEvent event) {      LogUtils.printLog(getClass(), "【实习生】来一任务<%s>:需要{分派}给下一级吗?我想分派,我底下没人了,怎么办?我还是老老实实的干吧", event);      return super.dispatchTouchEvent(event);   }   @Override   public boolean onTouchEvent(MotionEvent event) {      boolean is=false;//我处理不了;      String result;      if(is){         result="皇天不负有心人,【解决了】。";      }else{         result="皇天就负有心人,无能为力,【没解决】。";      }      LogUtils.printLog(getClass(), "【实习生】自己{处理}任务<%s>:查阅资料,埋头苦干,一声不吭的干了起来。"+result, event);         return is;   }}


原创粉丝点击