質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1566閲覧

Xamarin VideoViewコントロールの上にActivityIndicatorを置くと動作が不安定

sksksksk

総合スコア4

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2021/08/20 05:11

編集2021/08/20 05:17

Xamarin.Forms WPF初心者です。

・やりたいこと
4分割で表示しているvlcのVideoViewを再生開始前までActivityIndicatorを表示させ、再生状態になった後非表示にしたい

・現状
1画面だけActivityIndicatorが非表示され、改めて停止→再生の処理をしても停止の時点でActivityIndicatorが非表示のままになっている(他3画面は常に表示)

xaml

1 <Grid> 2 <Grid.RowDefinitions> 3 <RowDefinition Height="2*"/> 4 <RowDefinition Height="2*"/> 5 </Grid.RowDefinitions> 6 <Grid.ColumnDefinitions> 7 <ColumnDefinition Width="*"/> 8 <ColumnDefinition Width="*"/> 9 </Grid.ColumnDefinitions> 10 11 <Grid HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Margin="0,0,0,0" 12 x:Name="OBJ_GRID_VIEW_00" BackgroundColor="Transparent"> 13 <Grid.RowDefinitions> 14 <RowDefinition Height="*"/> 15 </Grid.RowDefinitions> 16 <Grid.ColumnDefinitions> 17 <ColumnDefinition Width="*"/> 18 </Grid.ColumnDefinitions> 19 <!-- LibVLCSharp --> 20 <vlc:VideoView Grid.Row="0" Grid.Column="0" 21 HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" 22 x:Name="OBJ_VLC_VIEW_00" 23 AutomationProperties.IsInAccessibleTree="True"/> 24 <!-- ロード中表示 --> 25 <ActivityIndicator Grid.Row="0" Grid.Column="0" 26 HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" 27 x:Name="OBJ_VLC_LOAD_00" 28 BackgroundColor="#CC000000" Color="White" IsRunning="true" /> 29 30 </Grid> 31 <!-- 省略 ↑のGridと同じようなコントロール群が3つ分ある --> 32 33 </Grid>

C#

1 2public partial class MainPage : ContentPage 3{ 4 VideoView[] objVlc = null; 5 ActivityIndicator[] objLoad = null; 6 Media[4] media = null; 7 LibVLC[4] libVLC = null; 8 9 public MainPage() 10 { 11 InitializeComponent(); 12 13 objVlc = new VideoView[4]{OBJ_VLC_VIEW_00, OBJ_VLC_VIEW_01, 14 OBJ_VLC_VIEW_02, OBJ_VLC_VIEW_03 }; 15 16 objLoad= new ActivityIndicator[4]{OBJ_VLC_LOAD_00, OBJ_VLC_LOAD_01, 17 OBJ_VLC_LOAD_02, OBJ_VLC_LOAD_03 }; 18 19 for (int i = 0; i < 4;i++) 20 { 21 libVLC[i]= new LibVLC(); 22 objVlc[i].MediaPlayer = new MediaPlayer(libVLC[i]) { EnableHardwareDecoding = true }; 23 } 24 } 25 26 //クリックイベント 27 public void VlcPlayClick(object sender, EventArgs e) 28 { 29 30 VlcStop(); 31 32 for (int i = 0; i < 4;i++) 33 { 34 media[i] = new Media(libVLC, /*URL*/, FromType.FromLocation); 35 objVlc[i].MediaPlayer.Play(media); 36 } 37 //本来は再生してるかの状態チェックを行ってから非表示にしている 38  for (int i = 0; i < 4;i++) 39 { 40 //ロード非表示 41 objLoad[i].IsVisible = false; 42 objLoad[i].IsRunning = false; 43 } 44 } 45 public void VlcStop() 46 { 47 for (int i = 0; i < 4;i++) 48 { 49 if(media[i] != null) 50 { 51 objVlc[i].MediaPlayer.Stop(); 52 media.Dispose(); 53 media = null; 54 } 55 } 56  for (int i = 0; i < 4;i++) 57 { 58 //ロード表示 59 objLoad[i].IsVisible = true; 60 objLoad[i].IsRunning = true; 61 } 62 } 63}

vlcの処理自体が重たいという印象があるので、処理の間にTaskやSleepを試したのですが、多少の挙動は変わるものの、安定した動作にはなりませんでした。

根本的におかしな点があるのでしょうか?ご回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。
https://blog.ytabuchi.dev/entry/2015/04/06/152522
この情報を元にIsVisibleの箇所をOpacityに置き換えたらスムーズに動作するようになりました。
私が思っていた以上にIsVisibleの切替は重たかったみたいです。

投稿2021/08/23 08:03

sksksksk

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問