1

我的目的是,在我的活动开始 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>
4

1 回答 1

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);
于 2012-07-01T05:38:03.610 回答