所以这就是问题
第一次运行时的动画不起作用,我不知道为什么
起初我使用xml进行动画制作,但是这样动画只在第一次尝试时起作用而且再也没有,所以我改变并在java代码中创建所有内容。
但现在,除了第一次尝试外,它总是运行。
必须澄清我必须在2.2(froyo)版本上工作。
public class HomePage extends Activity {
protected View menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page_portrait);
ImageButton plus = (ImageButton) findViewById(R.id.button1);
menu = (View) findViewById(R.id.layoutmenu);
plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//menu.clearAnimation();
Animation animation = new TranslateAnimation(0,-menu.getWidth(),0,0);
menu.clearAnimation();
if(menu.isShown()) {
animation.setDuration(500);
animation.setFillAfter(true);
menu.setAnimation(animation);
menu.setVisibility(View.GONE);
}
else {
animation.reset();
animation = new TranslateAnimation(-menu.getWidth(),0,0,0);
animation.setDuration(500);
animation.setFillAfter(true);
menu.setVisibility(View.VISIBLE);
menu.setAnimation(animation);
}
}
});
}
}
任何线索?
修改
所以我改变了我的代码,但现在根本不起作用。
public void onClick(View v) {
//menu.clearAnimation();
Animation animation;
menu.clearAnimation();
if(menu.isShown()) {
//animation.reset();
animation = new TranslateAnimation(0,-menu.getWidth(),0,0);
animation.setDuration(500);
animation.setFillAfter(true);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
menu.setVisibility(View.GONE);
}
});
menu.setAnimation(animation);
menu.setVisibility(View.GONE);
}
else {
//animation.reset();
animation = new TranslateAnimation(-menu.getWidth(),0,0,0);
animation.setDuration(500);
animation.setFillAfter(true);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
menu.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
menu.setVisibility(View.VISIBLE);
}
});
menu.setAnimation(animation);
//menu.setVisibility(View.VISIBLE);
}
animation.reset();
}
});
答案 0 :(得分:0)
删除以下行。
menu.setVisibility(View.GONE);
不是在此处显示GONE的可见性,而是将 AnimationListener
添加到 animation
并在侦听器onAnimationEnd(Animation animation)
方法中添加让您的观看能见度为GONE。
在整个动画完成后,这将注意将视图的可见性更改为GONE。