MediaController阻止使用ImageButtons

时间:2014-02-20 20:38:05

标签: android media-player imagebutton mediacontroller

我在TextureView中使用MediaPlayer在我的Android应用中播放视频。当MediaController可见时,它阻止我在同一视图中选择我下面的ImageButtons(见图)。

隐藏MediaController时,我可以选择按钮。我也尝试将MediaController从按钮移开很远,看看它们是否意外重叠,但我仍然遇到同样的问题。

即使MediaController可见,我怎样才能确保仍然可以选择ImageButtons?

enter image description here

这是我的布局文件:

<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"
android:background="@color/black"
android:orientation="vertical"
tools:context=".MediaPreview" >

<FrameLayout
    android:id="@+id/media_holder"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/bottom_button_image_preview"
    android:layout_alignParentTop="true"
    android:background="@color/black"
    android:gravity="center" >

    <FrameLayout
        android:id="@+id/main_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/black" >
    </FrameLayout>

        <TextureView
            android:id="@+id/s3_video"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:rotation="0"
            />

</FrameLayout>

<ProgressBar
    android:id="@+id/media_progress"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true" />

<LinearLayout
    android:id="@+id/bottom_button_image_preview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="@color/white"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    android:focusableInTouchMode="true"
    android:clickable="true" 
    android:descendantFocusability="blocksDescendants" >

    <ImageButton
        android:id="@+id/delete_imagePreview"
        android:layout_width="wrap_content"
        android:layout_height="@dimen/bottom_button_height"
        android:layout_marginRight="1dp"
        android:layout_weight="0.3"
        android:adjustViewBounds="true"
        android:background="@drawable/custom_button_blue"
        android:contentDescription="@string/delete_imagePreview"
        android:maxHeight="60dp"
        android:maxWidth="60dp"
        android:scaleType="fitCenter"
        android:src="@drawable/ic_action_discard"
        android:focusableInTouchMode="true"
        android:clickable="true" 
        android:descendantFocusability="blocksDescendants">
    </ImageButton>

    <ImageButton
        android:id="@+id/okay_imagePreview"
        android:layout_width="wrap_content"
        android:layout_height="@dimen/bottom_button_height"
        android:layout_weight="0.3"
        android:adjustViewBounds="true"
        android:background="@drawable/custom_button_blue"
        android:contentDescription="@string/okay_imagePreview"
        android:maxHeight="60dp"
        android:maxWidth="60dp"
        android:scaleType="fitCenter"
        android:src="@drawable/ic_action_accept_white"
        android:focusableInTouchMode="true"
        android:clickable="true" 
        android:descendantFocusability="blocksDescendants">
    </ImageButton>
</LinearLayout>

以下是我创建控制器的方法:

   // set up mediacontroller
   videoController = new MediaController(this);
   videoControllerExists = true;
   videoController.setAnchorView(mediaHolder);
   videoController.setPadding(0, 0, 0, bottomButtonHeight);

然后我将它与mediaPlayer联系在一起:

@Override
public void onPrepared(MediaPlayer mp) {
    if(isAmazon && mediaURL.length() > 0){
        videoController.setMediaPlayer(this);
        videoController.setEnabled(true);
        videoController.show();     
    }    
}

1 个答案:

答案 0 :(得分:0)

我无法完全解决这个问题,但这是我的解决方法。

我使用setY设置MediaController的位置,并将其设置为等于按钮高度的负偏移量。我在onVideoSizeChanged中设置了MediaController(在我知道视频播放器的大小之后)

  s3VideoPlayer.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {

                    @Override
                    public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {

                        // set up mediacontroller
                        videoController = new MediaController(MediaPreview.this);
                        videoControllerExists = true;         
                        videoController.setAnchorView(mediaHolder);
                        videoController.setY(-bottomButtons.getHeight());
                        videoController.bringToFront();
                        videoController.requestFocus();
                        mediaProgress.setVisibility(View.GONE);   
                    }
                });
                s3VideoPlayer.start(); 

这最终看起来像这样:

enter image description here

您可能会注意到播放/暂停以及快进和快退按钮现已消失;我无法让他们再次出现。当mediaController可见时,我仍然无法单击图像按钮,但是当我单击视图中的任何位置时,mediaController会隐藏自身,因此用户必须点击任一按钮两次才能使其工作。它不是很好,但比我以前更好。