在Android中通过VideoView显示和隐藏播放button

我希望能够显示一个button来开始一个video,集中在video将播放(使用VideoView)相同的视图。 我也希望button消失后,我点击它,因为我使用MediaController类执行暂停,后退,快进行动一旦video已经开始。

我该怎么做呢?

这是我迄今为止的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <FrameLayout android:id="@+id/video_frame" android:layout_width="fill_parent" android:layout_height="480px" android:background="#000" > <VideoView android:id="@+id/video_view" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </FrameLayout> 

我已经尝试以编程方式向FrameLayout添加一个ImageButton,但似乎没有工作。

Solutions Collecting From Web of "在Android中通过VideoView显示和隐藏播放button"

好的,我是这样解决的 布局文件非常简单。 在VideoView元素后面添加一个ImageButton:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <FrameLayout android:id="@+id/video_frame" android:layout_width="fill_parent" android:layout_height="480px" android:background="#000" > <VideoView android:id="@+id/video_view" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <ImageButton android:id="@+id/play_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|center_horizontal" android:src="@drawable/ic_launcher" /> </FrameLayout> 

FrameLayout视图元素按照您在布局中定义它们的顺序将其子元素彼此层叠在一起。 所以在布局中添加的最后一个元素被绘制在最上面。 注意ImageButton有这个属性:

 android:layout_gravity="center_vertical|center_horizontal" 

该属性将ImageButton放在FrameLayout中。

下一个技巧是让ImageButton在点击后消失。 使用ImageButton上的setVisibility()方法来执行此操作:

  // Setup a play button to start the video mPlayButton = (ImageButton) findViewById(R.id.play_button); mPlayButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mPlayer.isPlaying()) { resetPlayer(); } else { playVideo(videoUrl, mVideoView.getHolder()); // show the media controls mController.show(); // hide button once playback starts mPlayButton.setVisibility(View.GONE); } } }); 

不要使用button,请尝试使FrameLayout可点击 。

或者,您可以在FrameLayout下面放置一个Button,并在onClick事件处理程序中将View的可见性设置为GONE。

编辑:或者尝试这样的: https : //stackoverflow.com/a/7511535/826731

FrameLayout的一个鲜为人知的function叫做Foreground Drawable 。 您可以指定一个将在所有FrameLayout子项之上呈现的drawable。 所以:

 mFrameLayout.setForegroundDrawable(mPlayDrawable); 

将做的伎俩,你的布局将更有效率(更less的意见)。

您可以使用重力常数来正确alignmentdrawable

 mFrameLayout.setForegroundGravity(Gravity.XXXX)