我正在为线性布局应用动画,如下所示:
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();
Visibility
的Gone
使视图不可见,并且它不占用任何空间用于布局。
删除它就可以了:
//testLayout.Visibility = ViewStates.Gone;