Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android VideoView BringToFront在Xamarin中第二次不起作用_Android_Xamarin - Fatal编程技术网

Android VideoView BringToFront在Xamarin中第二次不起作用

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

我正试图把一个视频视图从后面带到前面,但没有任何效果。在下面,我将首先介绍代码,然后介绍我的尝试,希望有人能够解决我的问题:

这是一个使用Xamarin编写的Android应用程序的简化复制

恕我直言,以下是我的代码:

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();  
    }