Android VideoView BringToFront在Xamarin中第二次不起作用
我正试图把一个视频视图从后面带到前面,但没有任何效果。在下面,我将首先介绍代码,然后介绍我的尝试,希望有人能够解决我的问题: 这是一个使用Xamarin编写的Android应用程序的简化复制 恕我直言,以下是我的代码:Android VideoView BringToFront在Xamarin中第二次不起作用,android,xamarin,Android,Xamarin,我正试图把一个视频视图从后面带到前面,但没有任何效果。在下面,我将首先介绍代码,然后介绍我的尝试,希望有人能够解决我的问题: 这是一个使用Xamarin编写的Android应用程序的简化复制 恕我直言,以下是我的代码: using Android.App; using Android.Widget; using Android.OS; using Android.Media; using System; namespace Experiment { public class Liste
using Android.App;
using Android.Widget;
using Android.OS;
using Android.Media;
using System;
namespace Experiment
{
public class Listener : Java.Lang.Object, MediaPlayer.IOnCompletionListener
{
private Action action;
public Listener(Action action)
{
this.action = action;
}
public void OnCompletion(MediaPlayer unused)
{
this.action();
}
}
[Activity(Label = "Experiment", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
private VideoView foreView;
private VideoView backView;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
this.foreView = this.FindViewById<VideoView>(Resource.Id.foreView);
this.backView = this.FindViewById<VideoView>(Resource.Id.backView);
this.foreView.SetVideoURI(Android.Net.Uri.Parse("..."));
this.foreView.Start();
this.foreView.SetOnCompletionListener(new Listener(this.OnForeViewCompleted1));
this.backView.SetVideoURI(Android.Net.Uri.Parse("..."));
this.backView.SetOnCompletionListener(new Listener(this.OnBackViewCompleted1));
}
private void OnForeViewCompleted1()
{
this.backView.Start();
this.foreView.SetVideoURI(Android.Net.Uri.Parse("..."));
this.backView.BringToFront();
}
private void OnBackViewCompleted1()
{
this.foreView.SetOnCompletionListener(null);
this.foreView.Start();
this.foreView.BringToFront();
}
}
}
一个解决问题的拉请求将非常棒,提前感谢 我尝试了一些方法将
视频视图
放在最前面,但它没有像你说的那样工作
但是您可以发现VideoView
Z顺序级别取决于加法的顺序
因此,作为一种解决方法,我更改了添加两个视频视图的顺序:
private void OnForeViewCompleted1()
{
//backView.BringToFront();
//backView.SetZOrderOnTop(true);
//myfatherLayout.UpdateViewLayout(backView, backView.LayoutParameters);
myfatherLayout.RemoveView(foreView);
myfatherLayout.AddView(foreView);
img1.BringToFront();
this.backView.Start();
}
private void OnBackViewCompleted1()
{
//foreView.BringToFront();
// foreView.SetZOrderOnTop(true);
//myfatherLayout.UpdateViewLayout(foreView, foreView.LayoutParameters);
myfatherLayout.RemoveView(backView);
myfatherLayout.AddView(backView);
img2.BringToFront();
this.foreView.Start();
}
myfatherLayout
是视频视图容器(您的RelativeLayout
)
您可以看到视频视图将按照您的要求显示:
我尝试了一些方法将
视频视图
放在最前面,但它没有像你说的那样工作
但是您可以发现VideoView
Z顺序级别取决于加法的顺序
因此,作为一种解决方法,我更改了添加两个视频视图的顺序:
private void OnForeViewCompleted1()
{
//backView.BringToFront();
//backView.SetZOrderOnTop(true);
//myfatherLayout.UpdateViewLayout(backView, backView.LayoutParameters);
myfatherLayout.RemoveView(foreView);
myfatherLayout.AddView(foreView);
img1.BringToFront();
this.backView.Start();
}
private void OnBackViewCompleted1()
{
//foreView.BringToFront();
// foreView.SetZOrderOnTop(true);
//myfatherLayout.UpdateViewLayout(foreView, foreView.LayoutParameters);
myfatherLayout.RemoveView(backView);
myfatherLayout.AddView(backView);
img2.BringToFront();
this.foreView.Start();
}
myfatherLayout
是视频视图容器(您的RelativeLayout
)
您可以看到视频视图将按照您的要求显示:
private void OnForeViewCompleted1()
{
//backView.BringToFront();
//backView.SetZOrderOnTop(true);
//myfatherLayout.UpdateViewLayout(backView, backView.LayoutParameters);
myfatherLayout.RemoveView(foreView);
myfatherLayout.AddView(foreView);
img1.BringToFront();
this.backView.Start();
}
private void OnBackViewCompleted1()
{
//foreView.BringToFront();
// foreView.SetZOrderOnTop(true);
//myfatherLayout.UpdateViewLayout(foreView, foreView.LayoutParameters);
myfatherLayout.RemoveView(backView);
myfatherLayout.AddView(backView);
img2.BringToFront();
this.foreView.Start();
}