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 に答える