请问一下关于android的事件分发机制的有关问题

请教一下关于android的事件分发机制的问题!
现在我有一个这样的需求,两个布局上下的(framelayout)。怎么让上面的获取焦点(不对上面那一层布局文件进行控制),而下面的不获取呢?
我用事件分发机制,试了一试不行,不知道是我设置的不对还是怎么的?
求大家指导指导!!谢谢!!!!

下面是我的布局文件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.MGSD.ottvr.UnityLayout
        android:id="@+id/unity_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    </com.MGSD.ottvr.UnityLayout>

    <com.MGSD.ottvr.AndrLayout
        android:id="@+id/andr_layout"
        android:layout_width="200dip"
        android:layout_height="200dip"
        android:background="#bfe309"
        android:orientation="vertical" >
    </com.MGSD.ottvr.AndrLayout>

</FrameLayout>


UnityLayout:
public class UnityLayout extends LinearLayout{

public UnityLayout(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

public UnityLayout(Context context, AttributeSet attributeSet){
super(context, attributeSet);
}

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Toast.makeText(getContext(), "dispatchTouchEvent", Toast.LENGTH_SHORT).show();
return true;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
Toast.makeText(getContext(), "onInterceptTouchEvent", Toast.LENGTH_SHORT).show();
return super.onInterceptTouchEvent(ev);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
Toast.makeText(getContext(), "onTouchEvent", Toast.LENGTH_SHORT).show();
return super.onTouchEvent(event);
}

}


AndrLayout:
public class AndrLayout extends LinearLayout{

public AndrLayout(Context context){
super(context);
}

public AndrLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}


@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Toast.makeText(getContext(), "~~dispatchTouchEvent", Toast.LENGTH_SHORT).show();
return super.dispatchTouchEvent(ev);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
Toast.makeText(getContext(), "~~onInterceptTouchEvent", Toast.LENGTH_SHORT).show();
return super.onInterceptTouchEvent(ev);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
Toast.makeText(getContext(), "~~onTouchEvent", Toast.LENGTH_SHORT).show();
UnityPlayer.UnitySendMessage("Manger", "WhichHouse", "0");
return true;
}
}


到底该在分发的时候做控制还是在拦截的时候控制呢?



------解决思路----------------------
你debug看下,从FrameLayout就可以看下dispatchTouchEvent执行了以后,它跳到哪里执行了,,,
------解决思路----------------------
应该是DispatchTouchEvent返回true吧,不给它的子类传递点击事件
------解决思路----------------------
引用:
我是想unityLayout中包括的控件都不能获取焦点,在分发的时候返回true,按理来说应该是能实现我这个需求的,
但是实际上不行。下层的还是能获取焦点。

我下层包括的是unity的视图!!!

你的不能获取焦点,是想让unity视图内的控件,比如Button点击没效果,还是怎样,如果是我说的是想让按钮点击没效果,在unity布局进行事件拦截

public boolean onInterceptTouchEvent(MotionEvent ev) {
        Toast.makeText(getContext(), "onInterceptTouchEvent", Toast.LENGTH_SHORT).show();
        return true;
    }

在者,unity布局和AndrLayout是同一层次的,它们的ViewGroup都是FrameLayout
------解决思路----------------------
看我理解:
UnityLayout和AndrLayout是存在于FrameLayout中间的两个同级View,所以一般的事件分发在他们的子类里面控制是影响不了别一个View的(事件分发是父子之间的传递吧),要想控制只有通过继承FrameLayout,拿到两个View手动去分发事件。