我有一个Android应用程序,显示一个VideoView,前面有按钮。在目标设备上,按钮正确显示在顶部,直到VideoView重绘自身(例如从另一个活动返回时)。然后按钮被VideoView隐藏。
这在其他两个设备上不会发生,据我所知,这不是Android中预期的行为。我认为这与我在设备上看到的错误有关。标签为'TIOverlay'
,文字为
'static void overlay_control_context_t::overlay_destroyOverlay( overlay_control_device_t*, overlay_t*) : Lets Switch off Alpha Blending'
有没有办法强制VideoView重新计算它的alpha?由于初始视图是正确的,我假设在重绘时没有考虑完整的布局。
这是我的VideoView初始化代码:
//set up video
this.videoView = (VideoView) findViewById(R.id.introVideoView);
videoView.setZOrderOnTop(false);
//create intro movie and begin playing
String uri = "android.resource://"+getPackageName()+"/"+R.raw.movie;
videoView.setVideoURI(Uri.parse(uri));
//set to looping
videoView.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp)
{
mp.setLooping(true);
}});
videoView.start();
修改
我用来显示视频视图前面按钮的布局是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainLayout" >
<VideoView
android:id="@+id/introVideoView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<ImageButton
android:id="@+id/exitDemoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:contentDescription="Exit Demo >>"
android:onClick="exitDemo"
android:background="#00000000"
android:src="@drawable/exit_selector" />
<LinearLayout
android:id="@+id/buttonLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/resumeVideoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onResumeClicked"
android:contentDescription="Resume Video"
android:background="#00000000"
android:src="@drawable/resume_selector" />
<ImageButton
android:id="@+id/guidedTourButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onTourClicked"
android:contentDescription="Guided Tour"
android:background="#00000000"
android:src="@drawable/tour_selector" />
</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainLayout" >
<VideoView
android:id="@+id/introVideoView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<ImageButton
android:id="@+id/exitDemoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:contentDescription="Exit Demo >>"
android:onClick="exitDemo"
android:background="#00000000"
android:src="@drawable/exit_selector" />
<LinearLayout
android:id="@+id/buttonLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/resumeVideoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onResumeClicked"
android:contentDescription="Resume Video"
android:background="#00000000"
android:src="@drawable/resume_selector" />
<ImageButton
android:id="@+id/guidedTourButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onTourClicked"
android:contentDescription="Guided Tour"
android:background="#00000000"
android:src="@drawable/tour_selector" />
</LinearLayout>
答案 0 :(得分:0)
我确实找到了解决方案。这看起来是因为我从其他意图切换回这个视图与类似的VideoViews我需要在切换到另一个意图之前使用VideoView.suspend()
暂停视频或从该意图返回到此视图。我推测这是因为硬件只有一个好的硬件视频缓冲区,它保留了我刚刚留在缓冲区中的VideoView
。