是什么导致这个动画闪烁,我该如何删除它?

时间:2014-05-29 20:28:30

标签: java android android-layout animation android-4.0-ice-cream-sandwich

我已经制作了一个小型的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>

所以我想弄清楚的是我在这里错误地做了什么导致了闪烁。在第一次按下按钮后,文本在屏幕上闪烁,然后消失并按预期滑动。

有什么想法吗?

0 个答案:

没有答案