布局动画随机不可见



我正在为线性布局应用动画,如下所示:

protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
SetContentView(Resource.Layout.activity_main);
testBtn = FindViewById<Button>(Resource.Id.testBtn);
testLayout = FindViewById<LinearLayout>(Resource.Id.testLayout);
testText = FindViewById<TextView>(Resource.Id.testText);
testLayout.Visibility = ViewStates.Gone;

slideIn = AnimationUtils.LoadAnimation(this, Resource.Animation.slide_in_right);
testBtn.Click += delegate 
{
counter++;
testText.Text = "Hello World " + counter;
testLayout.Visibility = ViewStates.Gone;
testLayout.StartAnimation(slideIn);
testLayout.Visibility = ViewStates.Visible;
};
}

slide_in_right.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="300"/>
</set>

我所看到的是,当应用程序启动时,可能有25%的时间,当按钮被按下时,动画和布局将不可见。在开始一个新的活动并返回到这个活动后,这似乎也会修复自己。这似乎也与设备有关,因为有些设备从未显示此问题,而其他设备甚至在相同的设备上也经常遇到此问题。

我也尝试了下面所示的其他动画,但到目前为止似乎没有任何帮助。

testLayout.Animation = AnimationUtils.LoadAnimation(this, Resource.Animation.slide_in_right);
testLayout.Visibility = ViewStates.Visible;
testLayout.Animation.StartNow();
testLayout.Animation = new TranslateAnimation(-width, toXDelta: 0f, fromYDelta: 0f, toYDelta: 0f)
{
Duration = 200
};
testLayout.Visibility = ViewStates.Visible;
testLayout.Animation.StartNow();

VisibilityGone使视图不可见,并且它不占用任何空间用于布局。

删除它就可以了:

//testLayout.Visibility = ViewStates.Gone;

最新更新