使用 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(); }
結果為
清單移動中…
清單移動中…