今天為一個系統左側的菜單欄設置了一個點擊事件,設置了translateAnimation以后發現,當位移動畫結束以后,菜單里邊的button的onclick事件還在,不得不感慨這點官方做得實在夠腦殘,於是自己又加了一個控制view顯隱的代碼,最后代碼是這樣的:
private void startHideAnimation(){ if (isexpand==true) { Animation hideAnimation = new TranslateAnimation(0, -menuLayoutWidth, 0, 0); hideAnimation.setInterpolator(new AccelerateDecelerateInterpolator()); hideAnimation.setDuration(800); hideAnimation.setFillAfter(true); hideAnimation.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 menuLayout.setVisibility(View.GONE); } }); menuLayout.startAnimation(hideAnimation);//直接設置的話,menulayout雖然從視野消失,但是原地點擊的效果還在 } isexpand = false; } private void startShowAnimation(){ if (isexpand==false) { Animation showAnimation = new TranslateAnimation(-menuLayoutWidth, 0, 0, 0); showAnimation.setInterpolator(new AccelerateDecelerateInterpolator()); showAnimation.setDuration(500); showAnimation.setFillAfter(true); menuLayout.startAnimation(showAnimation); menuLayout.setVisibility(View.VISIBLE); } isexpand = true; }