Это моя первая попытка Android приложения в качестве веб-разработчика. Пока у меня есть RelativeView в приложении Xamarin Android. Я могу отобразить кнопку .png со слоем прозрачности поверх предварительного просмотра камеры, переданного в TextureView. Эта часть работает как ожидалось. Однако я использую аналогичный подход для отображения анимированного GIF-файла, и он, похоже, отрисовывается за TextureView. Анимация GIF воспроизводится один раз, после чего отображается текстура, и я больше не вижу анимированный GIF. Желаемое поведение будет для GIF до l oop при отображении поверх TextureView. Я использую библиотеку Refactored.GifImageView для отображения анимации GIF.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="25px"
android:id="@+id/container"
android:minHeight="25px">
<Test_DesignerView.AutoFitTextureView
android:id="@+id/texture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
<com.felipecsl.gifimageview.library.GifImageView
android:id="@+id/InProg"
android:layout_gravity="left"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<Button
android:id="@+id/RecButton"
android:layout_width="80dp"
android:layout_height="80dp"
android:padding="10dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="80dp"
android:layout_centerHorizontal="true"
android:background="@drawable/rec_button" />
</RelativeLayout>
Метод OnCreate
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
var requiredPermissions = new String[] { Manifest.Permission.Camera };
SetContentView(Resource.Layout.activity_main);
var btn = FindViewById<Button>(Resource.Id.RecButton);
gifImageView = FindViewById<GifImageView>(Resource.Id.InProg);
Stream input = Resources.OpenRawResource(Resource.Drawable.InProg);
byte[] bytes = ConvertByteArray(input);
gifImageView.SetBytes(bytes);
gifImageView.StartAnimation();
gifImageView.Visibility = ViewStates.Visible;
if (null == savedInstanceState)
{
FragmentManager.BeginTransaction()
.Replace(Resource.Id.container, CameraFragment.newInstance())
.Commit();
}
}