android flyin imageView一段时间后

时间:2012-07-01 05:31:24

标签: android animation android-imageview postdelayed

我想要的目的是,在我的活动开始后2秒,ImageView(带有图像)应该飞到视图中。但是使用以下代码没有任何反应。

我是在正确的方式还是我能完全解决这个问题? 我有什么需要改变的呢?

以下是我的代码的外观:

public class Main extends Activity {
    private ImageView _truck;
    private Handler _flyInTruckHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        _truck = (ImageView) findViewById(R.id.main_garbageTruck);
        _truck.setVisibility(View.INVISIBLE);

        _flyInTruckHandler = new Handler() {
            public void handleMessage(Message msg) {
                _truck.setVisibility(View.VISIBLE);
            }
        };

        _flyInTruckHandler.postDelayed(new Runnable() {
            public void run() {
                new flyInTruck();
            }
        }, 2000);
    }

    class flyInTruck extends TimerTask {

        @Override
        public void run() {
            Animation anim = AnimationUtils.loadAnimation(                      getApplicationContext(), R.anim.flyin);
        findViewById(R.id.main_garbageTruck).setAnimation(anim);
            _flyInTruckHandler.sendEmptyMessage(0);
            anim.start();
        }
    }
}

我使用的动画来自这里:Fly In Animation for a GridView 但略有改变:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="true" >
    <scale
        android:duration="2500"
        android:fillAfter="false"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" />
</set>

1 个答案:

答案 0 :(得分:0)

<强>解

好的,我明白了(这么简单,之前我没想过)。 我不需要额外的课程“flyInTruck”。我只能这样写:

    _flyInTruckHandler.postDelayed(new Runnable() {
        public void run() {
            Animation anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.flyin);
            findViewById(R.id.main_garbageTruck).setAnimation(anim);
            _flyInTruckHandler.sendEmptyMessage(0);
            anim.start();
        }
    }, 2000);