我已经制作了一个小型的Android应用程序来尝试解决我在其他应用程序上看到的问题。我正在尝试实现TextView
从屏幕开始,然后滚动的效果。
我做了什么看起来它在我的4.0.4上运行良好,但是当我使用Android虚拟设备(4.1.2)时,在动画之前有一个“闪烁”显示原始位置的TextView
开始。我在朋友的平板电脑上注意到了同样的事情(4.4)。
我上传了一个视频来展示问题here。
我的布局:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/txtV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
在我的MainActivity的onResume()
功能中,我将TextView
关闭屏幕移动到起始位置:
@Override
protected void onResume(){
super.onResume();
View v = findViewById(R.id.txtV);
Animation hideWords = AnimationUtils.loadAnimation(getBaseContext(), R.anim.hidetext);
hideWords.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
View v = findViewById(R.id.txtV);
int xOffset = (int)(v.getWidth() * .1);
RelativeLayout.LayoutParams rlParams =
(RelativeLayout.LayoutParams)v.getLayoutParams();
rlParams.setMargins(-1*xOffset, 0, xOffset, 0);
v.setLayoutParams(rlParams);
}
然后有一个按钮,只有onClick设置为函数animateIt()
,其来源是:
public void animateIt(View v){
v = findViewById(R.id.txtV);
AnimationSet as = new AnimationSet(true);
Animation showWords = AnimationUtils.loadAnimation(
getBaseContext(), R.anim.texnation);
as.addAnimation(showWords);
v.startAnimation(as);
}
动画只会在屏幕上滑动View
:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:duration="700"
android:fillAfter="true"
android:interpolator="@android:anim/linear_interpolator" >
<translate
android:fromXDelta="-100%"
android:toXDelta="0%" />
</set>
所以我想弄清楚的是我在这里错误地做了什么导致了闪烁。在第一次按下按钮后,文本在屏幕上闪烁,然后消失并按预期滑动。
有什么想法吗?