当然,在这里你是无法看到动态的动画效果的,当然如果你将笔者的代码运行,自然是可以看到动画效果的。这里的效果是说,当我们的list中的每一项最终显示为上图中的样子前展示给我们的动画效果。

       让我们看看activity代码:

java代码:

  1. package eoe.demo; 
  2. import android.app.Activity; 
  3. import android.os.Bundle; 
  4. import android.widget.ArrayAdapter; 
  5. import android.widget.ListView; 
  6. /** 
  7. * @description 布局动画 
  8. * 何谓布局动画:将容器内的视图制作成动画,它是补间动画的一种。当 
  9. * 前的例子中,我们要将listView容器中的内容做成动画 
  10. */ 
  11. public class Animation2Activity extends Activity{ 
  12. ListView listView; 
  13. String[]city = new String[]{ 
  14. "中关村", 
  15. "海淀剧院", 
  16. "海淀医院", 
  17. "人民大学" 
  18. }; 
  19. @Override 
  20. protected void onCreate(Bundle savedInstanceState) { 
  21. super.onCreate(savedInstanceState); 
  22. setContentView(R.layout.animation2); 
  23. listView = (ListView) findViewById(R.id.listView_animation2); 
  24. //声明一个适配器,context为this,布局为layout.simple_list_item_1,列表为city
  25. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, city)
  26. listView.setAdapter(adapter); 
  27. }
复制代码


       animation2.xml布局文件:

java代码:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3. android:layout_width="fill_parent" 
  4. android:layout_height="fill_parent" 
  5. android:orientation="vertical"> 
  6. <ListView 
  7. android:layout_width="fill_parent" 
  8. android:id="@+id/listView_animation2" 
  9. android:persistentDrawingCache="animation|scrolling" 
  10. android:layoutAnimation="@anim/animation2_drawable" 
  11. android:layout_height="wrap_content">
  12. </ListView> 
  13. </LinearLayout> 
  14. <!-- 
  15. 我们可以看到,在ListView的布局设置中,我们设置了两个和动画相关的属性: 
  16. android:persistentDrawingCache:该属性建议进行设置,它会对动画和滚动效果进行优化。 
  17. android:layoutAnimation:当前布局容器所对应的动画关联文件,注意,这里指定的是动画关联文件,而并非动画声明文件 
  18. --> 
复制代码


       动画声明文件:

java代码:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" 
  3. android:interpolator="@android:anim/accelerate_interpolator"
  4. <scale 
  5. android:fromXScale="1" 
  6. android:toXScale="1" 
  7. android:fromYScale="0.1" 
  8. android:toYScale="1.0" 
  9. android:duration="1000" 
  10. android:pivotX="50%" 
  11. android:pivotY="50%" 
  12. android:startOffset="100"> 
  13. </scale> 
  14. </set> 
  15. <!-- 
  16. 动画声明文件 该文件位于res/anim文件夹下 
  17. 对动画的具体行为进行定义: 
  18. android:fromXScale="1" 
  19. android:toXScale="1"指定了在X轴上,不进行缩放 
  20. android:fromYScale="0.1" 
  21. android:toYScale="1.0" 指定了再Y轴上,从十分之一开始方法,一直放大到正常大小 
  22. android:duration="1000"动画展示的时间 
  23. android:pivotX="50%" 
  24. android:pivotY="50%" 在动画执行的中间点,对象的大小在X/Y轴上都是50% 
  25. android:startOffset="100" 改动画执行之前等待的毫秒数 
  26. --> 
复制代码


       动画关联文件:

xml代码:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" 
  3. android:delay="30%" 
  4. android:animationOrder="reverse" 
  5. android:animation="@anim/scale_anim" 
  6. </layoutAnimation> 
  7. <!-- 动画关联文件 该文件位于res/anim文件夹下 
  8. 该文件是容器和动画声明文件的中间媒介,它绑定到了一个动画声明文件, 
  9. 并且对该动画的一些播放属性进行了设置,例如这里的 
  10. android:delay 每一项动画应该在延迟动画总时间的30%开始执行(当前列表有多个动画时使用), 
  11. 延迟动画总时间对应着动画声明文件中android:startOffset的总和 
  12. android:animationOrder:列表中的动画的执行顺序(当前列表有多个动画时使用) 
  13. android:animation 指定了动画声明文件 
  14. --> 
  15. <?xml version="1.0" encoding="utf-8"?>
  16. <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
  17. android:delay="30%"
  18. android:animationOrder="reverse"
  19. android:animation="@anim/scale_anim"
  20. >
  21. </layoutAnimation>
  22. <!-- 动画关联文件 该文件位于res/anim文件夹下
  23. 该文件是容器和动画声明文件的中间媒介,它绑定到了一个动画声明文件,
  24. 并且对该动画的一些播放属性进行了设置,例如这里的
  25. android:delay 每一项动画应该在延迟动画总时间的30%开始执行(当前列表有多个动画时使用),
  26. 延迟动画总时间对应着动画声明文件中android:startOffset的总和
  27. android:animationOrder:列表中的动画的执行顺序(当前列表有多个动画时使用)
  28. android:animation 指定了动画声明文件
  29. -->
复制代码


        上面只是展示了一个缩放动画,那么常见的动画还有那些呢?

xml代码:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" 
  3. android:interpolator="@android:anim/accelerate_interpolator"> 
  4. <!-- rotate旋转动画,围绕着文本的中心旋转一圈 --> 
  5. <rotate 
  6. android:fromDegrees="0.0" 
  7. android:toDegrees="360" 
  8. android:pivotY="50%" 
  9. android:pivotX="50%" 
  10. android:duration="5000" 
  11. ></rotate> 
  12. <!-- translate代表着移动动画,改动画将文本从当前所分配的显示空间的顶部移动到底部 --> 
  13. <translate 
  14. android:fromYDelta="-100%" 
  15. android:toYDelta="0" 
  16. android:duration="10000" 
  17. ></translate> 
  18. <!-- alpha代表着可见度渐变动画,从不可见,变为完全可见 --> 
  19. <alpha 
  20. android:fromAlpha="0.0" 
  21. android:toAlpha="1.0" 
  22. android:duration="3000" 
  23. ></alpha> 
  24. </set> 
复制代码


       在这里,我们可以看到,无论是哪个动画声明文件中,都有这么一行代码:

xml代码:

  1. android:interpolator="@android:anim/accelerate_interpolator"
复制代码

 

posted on 2012-12-25 18:12  merryjd  阅读(377)  评论(0)    收藏  举报