Xamarin Android - 如何在textview动画期间阻止文本移动

千金一刻莫空度,老大无成空自伤。这篇文章主要讲述Xamarin Android - 如何在textview动画期间阻止文本移动相关的知识,希望能为你提供帮助。
我必须在我的应用程序中做一些动画,但我有textview的问题。我需要为textview设置动画,然后从右上角进行比较。
这是我的布局:

< RelativeLayout android:id="@+id/ThirdPartBottomLayout" android:layout_width="2000dp" android:layout_height="250dp" android:layout_alignParentBottom="true" android:background="@color/RedTA" android:paddingTop="20dp" android:paddingBottom="80dp"> < RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> < TextView android:id="@+id/ThirdPartText1" android:textSize="20dp" android:textColor="#ffffff" android:lines="1" android:text="@string/Onboarding_Page3_Text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" /> < TextView android:id="@+id/ThirdPartText2" android:textSize="16dp" android:textColor="#ffffff" android:layout_below="@+id/ThirdPartText1" android:text="@string/Onboarding_Page3_Text2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:gravity="center" /> < /RelativeLayout> < /RelativeLayout>

这是我初始化变量的地方:
int widhtR1 = 0; if (ThirdPartText1.Width > WidthPixel - PixelsToDp(50)) widhtR1 = WidthPixel - PixelsToDp(50); else widhtR1 = ThirdPartText1.Width; lp = new RelativeLayout.LayoutParams(widhtR1, ThirdPartText1.Height); lp.LeftMargin = WidthPixel; ThirdPartText1LeftMargin = (WidthPixel - widhtR1) / 2; ThirdPartText1.LayoutParameters = lp; int widhtR2 = 0; if (ThirdPartText2.Width > WidthPixel - PixelsToDp(50)) widhtR2 = WidthPixel - PixelsToDp(50); else widhtR2 = ThirdPartText2.Width; lp = new RelativeLayout.LayoutParams(widhtR2, ThirdPartText2.Height); lp.LeftMargin = WidthPixel; lp.TopMargin = PixelsToDp(10); lp.AddRule(LayoutRules.Below, Resource.Id.ThirdPartText1); ThirdPartText2LeftMargin = (WidthPixel - widhtR2) / 2; ThirdPartText2.LayoutParameters = lp;

要动画我使用ValueAnimator将LeftMargin从WidhtPixel移动到textview的minium left margin。我这样做了。
ThirdPartText1Animator = ValueAnimator.OfInt(1); ThirdPartText1Animator.SetDuration( ThirdPartText1AnimatorDuration); ThirdPartText1Animator.SetInterpolator(new AccelerateDecelerateInterpolator()); var lpTxt1 = (RelativeLayout.LayoutParams)ThirdPartText1.LayoutParameters; ThirdPartText1Animator.Update += (sender, e) => { int val = (int)e.Animation.AnimatedValue; Console.WriteLine("VAL TXT1:" + val); lpTxt1.LeftMargin = WidthPixel - (int)((WidthPixel - ThirdPartText1LeftMargin) * (val / 100f)); ThirdPartText1.LayoutParameters = lpTxt1; }; ThirdPartText2Animator = ValueAnimator.OfInt(1); ThirdPartText2Animator.SetDuration( ThirdPartText2AnimatorDuration); ThirdPartText2Animator.SetInterpolator(new LinearInterpolator()); var lpTxt2 = (RelativeLayout.LayoutParams)ThirdPartText2.LayoutParameters; ThirdPartText2Animator.Update += (sender, e) => { int val = (int)e.Animation.AnimatedValue; Console.WriteLine("VAL TXT2:" + val); lpTxt2.LeftMargin = WidthPixel - (int)((WidthPixel - ThirdPartText2LeftMargin) * (val / 100f)); ThirdPartText2.LayoutParameters = lpTxt2; }; /*** START WITH ****/ ThirdPartText1Animator.SetIntValues(0, 100); ThirdPartText1Animator.Start(); ThirdPartText2Animator.SetIntValues(0, 100); ThirdPartText2Animator.Start();

这就是动画开始时的问题,文本视图从右边比较但文本将移动以适应屏幕上的textview维度,而不是在textview真实维度上保持阻塞。
我怎么能避免在textview中移动文本。
希望我的信息足够,抱歉我的英语不好。
编辑
WidthPixel = Resources.DisplayMetrics.WidthPixels; AccelerateDecelerateInterpolator是一个Interpolator Android.Views.Animation
全班 OnboardingPage.cs OnboardingPageLayout.axml
提前致谢。
利玛窦。
答案对于每个人都有同样的问题,我想出了一个解决方案。 在第一次我使用左边距进行textview比较,所以当应用程序开始时我将左边距设置为屏幕宽度,当我需要使它出现时我减少左边距。 似乎如果你改变了textview的某些东西,就会被迫重新绘制每一个东西,所以也要改变它的高度。 为了避免这个问题,我创建了一个布局并将textview放在其中,并使用左边距的相同技巧来布局而不是textview和everythings工作。
【Xamarin Android - 如何在textview动画期间阻止文本移动】对不起,我的英语不好。 希望对某人有所帮助。

    推荐阅读