大家都知道:
控件名.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】 欢迎一起参与讨论策划。