我想要的目的是,在我的活动开始后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>
答案 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);