大家都知道:
控件名.setVisibility(View.GONE);能够在安卓里面隐藏控件,并且不占空间!
Ok,但是带动画效果的控件隐藏效果是不一样的。有一定区别,犹豫在视图中,setVisibility属性只是在静态的线程里面才能生效。
那么动态效果的时候setVisibility属性就会失效了。所以在这里介绍一点编程小技巧
首先我们看一下图:
上图可以看到有3个控件按钮,并且它们都是带有动画效果的控件,现在都是GONE状态,只显示动画开启的按钮效果。
要实现真正的能隐藏带动画效果的控件,必须有个先后顺序,然后再来启动按钮显示!
iv_chatliaoqiehuan.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Animation aniout = AnimationUtils.loadAnimation(getContext(),
R.anim.playerinfo_state_out);
aniout.setAnimationListener(new 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
iv_chatliaoqiehuan.setVisibility(View.GONE);
}
});
iv_chatliaoqiehuan.startAnimation(aniout);
Animation aniin = AnimationUtils.loadAnimation(getContext(),
R.anim.playerinfo_state_in);
aniin.setAnimationListener(new 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
ll_chatinfolist.setVisibility(View.VISIBLE);
iv_chatyingqiehuan.setVisibility(View.VISIBLE);
}
});
ll_chatinfolist.startAnimation(aniin);
iv_chatyingqiehuan.startAnimation(aniin);
}
});
先将动画实例化,然后将
setAnimationListener方法监听实现,当动画播放完毕之后将界面隐藏或者显示,这样,整个界面的流畅和逻辑就正确了,用户使用起来也非常方便!
onAnimationEnd里面书写隐藏或者关闭的代码,当动画播放完毕之后执行操作。
如图,动画展开,关闭都有动画,并且,在动画播放完毕后都实现了隐藏。
剑神客栈研发官方群:【45578308】 欢迎一起参与讨论策划。