Android - VideoView - onTouch的行为不符合预期

时间:2012-06-01 14:45:39

标签: android android-layout android-intent android-emulator android-widget

我正在按照教程尝试通过Android的VideoView构建自定义视频播放器 现在,当我触摸VideoView时,我想显示或隐藏媒体控制器。如果已经显示了控制器,则隐藏它们,如果它们被隐藏,则显示它们。

这些媒体控制器由2个LinearLayouts代表,位于VideoView上。 用红色突出显示的区域表示背景中的VideoView边框。

我的问题是,当我触摸与VideoView重叠的媒体控制器区域时,媒体控制器将被隐藏。这不是理想的效果,因为我没有直接触摸VideoView,而是直接触摸LinearLayout。

那么,当我点击LinearLayouts时,为什么Videoview会抓住触摸事件?

enter image description here

这是我的onTouch实施:

@Override
    public boolean onTouch(View v, MotionEvent event) {

        if (!isMediaControlerShown) {
            topPanel.setVisibility(View.VISIBLE);
            bottomPanel.setVisibility(View.VISIBLE);
            isMediaControlerShown = true;
        } else {
            topPanel.setVisibility(View.GONE);
            bottomPanel.setVisibility(View.GONE);
            isMediaControlerShown = false;
        }
        return false;
    }

XML布局的方案:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

<VideoView
        android:id="@+id/videoView"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:layout_height="wrap_content" />

<!-- The top panel of the Video Player -->

    <LinearLayout
        android:visibility="gone"
        android:id="@+id/top_panel"
        style="@style/VideoTopPanel"
        android:orientation="vertical" >

        <!-- ////// -->
    </LinearLayout>

<!-- The bottom panel of the Video Player -->

    <LinearLayout
        android:visibility="gone"
        android:id="@+id/bottom_panel"
        xmlns:android="http://schemas.android.com/apk/res/android"
        style="@style/VideoBottomPanel"
        android:orientation="vertical"
        android:layout_alignParentBottom="true"
        android:paddingBottom="@dimen/video_bottom_panel_padding_bottom"
        android:paddingTop="@dimen/video_bottom_panel_padding_top" >

       <!-- ////// -->
    </LinearLayout>
</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

通过为持有控件的视图设置单击侦听器解决了该问题,但在onClick()上没有执行任何操作 这样,视图就会收到点击事件并且不会消失。