Android ListView动画实现方法

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


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

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

[java] view plaincopy

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

Android ListView动画实现方法的相关文章

Android ListView动画特效实现原理及源码

Android 动画分三种,其中属性动画为我们最常用动画,且能满足项目中开发几乎全部需求,google官方包支持3.0+,我们可以引用三方包nineoldandroids来失陪到低版本.本例子中就是用属性动画实现效果. 对普通的View做动画,我们只要定义好要的动画ObjectAnimator或AnimatorSet,然后设置属性启动及可.但是,对ListView做动画应该如何.什么时候.在什么地方.对哪个View做动画属性呢? github上有成熟的listview动画包 https://gi

Android播放动画的方法示例

今天开始陆续整理一下一些常规的Android常用开发实用程序. 第一季:Android播放动画的方法示例 1. 通常动画都是gif图像,推荐使用easygifanimator工具来将其拆解为多个图片,建议是png的: 2. 在Android工程的res目录下新增anim目录,新建一个xml文件,比如loading.xml: <?xml version="1.0" encoding="utf-8"?> <animation-list android:

Android ListView动画特效实现原理及源代码

Android 动画分三种,当中属性动画为我们最经常使用动画,且能满足项目中开发差点儿所有需求,google官方包支持3.0+.我们能够引用三方包nineoldandroids来失陪到低版本号.本样例中就是用属性动画实现效果. 对普通的View做动画,我们仅仅要定义好要的动画ObjectAnimator或AnimatorSet.然后设置属性启动及可. 可是.对ListView做动画应该怎样.什么时候.在什么地方.对哪个View做动画属性呢? github上有成熟的listview动画包 http

Android ListView 单条刷新方法实践及原理解析

对于使用listView配合adapter进行刷新的方法大家都不陌生,先刷新adapter里的数据,然后调用notifydatasetchange通知listView刷新界面. 方法虽然简单,但这里面涉及到一个效率的问题,调用notifydatasetchange其实会导致adpter的getView方法被多次调用 (画面上能显示多少就会被调用多少次),如果是很明确的知道只更新了list中的某一个项的数据(比如用户点击list某一项后更新该项的显示状态,或者 后台回调更新list某一项,等等),

Android缩放动画

Android缩放动画 核心方法 public void startAnimation(Animation animation) 运行动画,參数能够是各种动画的对象,Animation的多态.也能够是组合动画,后面会有. 4个參数构造方法 /** * Constructor to use when building a ScaleAnimation from code * * @param fromX Horizontal scaling factor to apply at the start

Android旋转动画

Android旋转动画 核心方法 public void startAnimation(Animation animation) 执行动画,参数可以是各种动画的对象,Animation的多态,也可以是组合动画,后面会有. 2个参数的构造方法 /** * Constructor to use when building a RotateAnimation from code. * Default pivotX/pivotY point is (0,0). * * @param fromDegree

Android Animation动画实战(一): 从布局动画引入ListView滑动时,每一Item项的显示动画

前言: 之前,我已经写了两篇博文,给大家介绍了Android的基础动画是如何实现的,如果还不清楚的,可以点击查看:Android Animation动画详解(一): 补间动画 及 Android Animation动画详解(二): 组合动画特效 . 已经熟悉了基础动画的实现后,便可以试着去实现常见APP中出现过的那些精美的动画.今天我主要给大家引入一个APP的ListView的动画效果: 当展示ListView时,Listview的每一个列表项都按照规定的动画显示出来. 说起来比较抽象,先给大家

Android ListView Animation 4种动画效果(贴上了GIF图)

Animation是android的动画效果的组件,可以实现绚丽的翻页.ListView和GridView的展示. 这blog简单介绍一下4种动画效果方式: 1.  AlphaAnimation               控制渐变透明的动画效果    如图: 2.  ScaleAnimation               控制尺寸伸缩的动画效果 如图: 3.  TranslateAnimation        控制画面平移的动画效果  如图: 4.  RotateAnimation    

Android ListView getView()方法重复调用导致position错位

问题现状:Android ListView getView()方法重复调用导致position错位 解决办法:把ListView布局文件的layout_height属性改为fill_parent或者match_parent. <ListView android:id="@+id/myphoto_listview" android:layout_width="match_parent" android:layout_height="match_pare