我在TextureView中使用MediaPlayer在我的Android应用中播放视频。当MediaController可见时,它阻止我在同一视图中选择我下面的ImageButtons(见图)。
隐藏MediaController时,我可以选择按钮。我也尝试将MediaController从按钮移开很远,看看它们是否意外重叠,但我仍然遇到同样的问题。
即使MediaController可见,我怎样才能确保仍然可以选择ImageButtons?
这是我的布局文件:
<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();
}
}
答案 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();
这最终看起来像这样:
您可能会注意到播放/暂停以及快进和快退按钮现已消失;我无法让他们再次出现。当mediaController可见时,我仍然无法单击图像按钮,但是当我单击视图中的任何位置时,mediaController会隐藏自身,因此用户必须点击任一按钮两次才能使其工作。它不是很好,但比我以前更好。