在Android上使用布局动画时,在create()
方法中设置动画是不起作用的。这是因为在create()
方法中,视图还没有被添加到布局中,所以动画效果无法被显示出来。
解决方法是在视图被添加到布局后,即在onStart()
或onResume()
方法中设置动画。以下是一个示例代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取布局中的视图
View myView = findViewById(R.id.my_view);
// 设置视图的初始位置
myView.setX(0);
myView.setY(0);
// 设置视图的布局参数
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
myView.setLayoutParams(params);
}
@Override
protected void onStart() {
super.onStart();
// 获取布局中的视图
View myView = findViewById(R.id.my_view);
// 创建一个平移动画
TranslateAnimation animation = new TranslateAnimation(0, 200, 0, 0);
animation.setDuration(1000);
// 设置动画监听器
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
// 动画结束后的操作
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
// 开始动画
myView.startAnimation(animation);
}
在上面的示例中,我们在onCreate()
方法中设置了视图的初始位置和布局参数。然后,在onStart()
方法中创建了一个平移动画,并设置了动画的监听器。最后,调用startAnimation()
方法开始动画。
请注意,如果需要在视图被添加到布局之前应用动画,可以使用post()
方法或ViewTreeObserver
来监听布局完成的事件。