使用 ListView 來顯示清單時,預設的顯示方式是瞬間顯示,沒有任何的動畫,你可以使用 anim + LayoutAnimationController ,讓你的清單顯示增加質感,使用方式相當簡單,當已經處理完 ListView 的建立後,再加上 anim 和 LayoutAnimationController 即可,如下

      void listShowAnim(){
          AnimationSet set = new AnimationSet(true);
   
          Animation animation;
          animation = new TranslateAnimation(-300.0f,0.0f,0.0f,0.0f);
          animation.setDuration(1000);
          set.addAnimation(animation);
  //        Animation animation;
  //        animation = new AlphaAnimation(0.0f, 1.0f);
  //        animation.setDuration(500);
  //        set.addAnimation(animation);
  //
  //        animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,
  //                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
  //                -1.0f, Animation.RELATIVE_TO_SELF, 0.0f);
  //        animation.setDuration(100);
  //        set.addAnimation(animation);
   
          //every sublist action move, 0.0f: action together
          LayoutAnimationController controller = new LayoutAnimationController(
                  set, 0.0f);
   
          lv.setLayoutAnimation(controller);
      }

第 1 行為動畫方法的名子,以我的範例而言,它放在 initXml() 之後呼叫
第 3 行建立 AnimationSet set 如果想使用多種動畫就使用 AnimationSet ,只有1種的話使用 Animation 即可
第 5 行到第 8 行就是第 1 個動畫的建立,單純的移位動作
第 9 行把動畫加入 set
第 11 ~ 22行的註解就是多種動畫的示範
第 23 行使用 LayoutAnimationController 可以決定 ListView 中的清單是否一起動作, 0.0f 代表一起動作,如果是 1.0f 的話代表清單會以 1 秒為單位依序動作
第 26 行執行動畫,該動畫為從左邊移位進入畫面置中位置
最後把它放到 initXml() 後呼叫

  public void onCreate(Bundle savedInstanceState){
          super.onCreate(savedInstanceState);
          setContentView(R.layout.tabwidget4);
          initXml();
          listShowAnim();
      }

 

結果為

清單移動中…

清單移動中…