Android ListView动画实现方法

在Android中listview是最常用的控件之一,但是有时候我们会觉得千篇一律的listview看起来过于单调,于是就产生了listView动画,listview加载了动画会让用户体验更好,本期就分享一些listview动画以及实现方法,效果图



相信大家都熟悉Android的Tween动画,前四种动画就是Translate,Alpha,Rotate,Scale,最后一种Rotate3d则是用了一个3D旋转动画工具类Rotate3dAnimation,这个类的构造函数中接收一些3D旋转时所需用到的参数,比如旋转开始和结束的角度,旋转的中心点等。

LayoutAnimationController可以控制一组控件按照规定显示,ListView中的mListView.setLayoutAnimation相信大家都知道是用来干什么的了,接下来上代码

 

    1. private Button button, button2, button3, button4, button5;  
    2. private ListView mListView;  
    3. private Animation animation;  
    4. private LayoutAnimationController controller;  
    5. private String[] arry = { "一", "二", "三", "四", "五", "六" };  
    6. private ArrayAdapter<String> adapter;  
    7.   
    8. protected void onCreate(Bundle savedInstanceState) {  
    9.     super.onCreate(savedInstanceState);  
    10.     setContentView(R.layout.activity_main);  
    11.     initView();  
    12.     adapter = new ArrayAdapter<String>(this,  
    13.             android.R.layout.simple_list_item_1, arry);  
    14.     mListView.setAdapter(adapter);  
    15.   
    16. }  
    17.   
    18. private void initView() {  
    19.     // TODO Auto-generated method stub  
    20.     mListView = (ListView) findViewById(R.id.list);  
    21.     button = (Button) findViewById(R.id.btn_tran);  
    22.     button.setOnClickListener(this);  
    23.     button2 = (Button) findViewById(R.id.btn_alpha);  
    24.     button2.setOnClickListener(this);  
    25.     button3 = (Button) findViewById(R.id.btn_rotate);  
    26.     button3.setOnClickListener(this);  
    27.     button4 = (Button) findViewById(R.id.btn_scale);  
    28.     button4.setOnClickListener(this);  
    29.     button5 = (Button) findViewById(R.id.rotate3d);  
    30.     button5.setOnClickListener(this);  
    31. }  
    32.   
    33. @Override  
    34. public void onClick(View arg0) {  
    35.     // LayoutAnimationController.ORDER_NORMAL; 顺序显示  
    36.     // LayoutAnimationController.ORDER_REVERSE;反显示  
    37.     // LayoutAnimationController.ORDER_RANDOM; 随机显示  
    38.     switch (arg0.getId()) {  
    39.     case R.id.btn_tran:  
    40.         animation = new TranslateAnimation(-50f, 0f, 0f, 0f);  
    41.         animation.setDuration(500);  
    42.         //1f为延时  
    43.         controller = new LayoutAnimationController(animation, 1f);  
    44.         controller.setOrder(LayoutAnimationController.ORDER_NORMAL);  
    45.         mListView.setLayoutAnimation(controller);  
    46.         adapter.notifyDataSetInvalidated();  
    47.         break;  
    48.     case R.id.btn_alpha:  
    49.         animation = new AlphaAnimation(0f, 1f);  
    50.         animation.setDuration(500);  
    51.         controller = new LayoutAnimationController(animation, 1f);  
    52.         controller.setOrder(LayoutAnimationController.ORDER_NORMAL);  
    53.         mListView.setLayoutAnimation(controller);  
    54.         adapter.notifyDataSetInvalidated();  
    55.         break;  
    56.     case R.id.btn_rotate:  
    57.         animation = new RotateAnimation(0f, 360f);  
    58.         animation.setDuration(500);  
    59.         controller = new LayoutAnimationController(animation, 1f);  
    60.         controller.setOrder(LayoutAnimationController.ORDER_NORMAL);  
    61.         mListView.setLayoutAnimation(controller);  
    62.         adapter.notifyDataSetInvalidated();  
    63.         break;  
    64.     case R.id.btn_scale:  
    65.         animation = new ScaleAnimation(0.1f, 1.0f, 0.1f, 1.0f);  
    66.         animation.setDuration(500);  
    67.         controller = new LayoutAnimationController(animation, 1f);  
    68.         controller.setOrder(LayoutAnimationController.ORDER_NORMAL);  
    69.         mListView.setLayoutAnimation(controller);  
    70.         adapter.notifyDataSetInvalidated();  
    71.         break;  
    72.     case R.id.rotate3d:  
    73.         animation = new Rotate3dAnimation(0, 360, 200, 200, 0, true);  
    74.         animation.setDuration(1000);  
    75.         controller = new LayoutAnimationController(animation, 0.1f);  
    76.         controller.setOrder(LayoutAnimationController.ORDER_NORMAL);  
    77.         mListView.setLayoutAnimation(controller);  
    78.         adapter.notifyDataSetInvalidated();  
    79.         break;  
    80.     default:  
    81.         break;  
    82.     }  
    83.   

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。