本文以一个简单的小例子,简述在Android开发中,动画的简单应用,仅供学习分享使用。
概述
android提供了各种强大的apis,用于将动画应用到ui元素中,来丰富应用程序的功能和应用。
动画分类
在Android框架中,动画主要分为三类【这三种动画系统都是可行的选择,但一般来说,属性动画系统是首选的使用方法,因为它更灵活,提供了更多的功能】,具体如下:
- 帧动画:将图像资源按顺序一帧一帧的播放出来,形成动画()。
- 补间动画:又叫视图动画,是比较旧的系统,只能用于视图组件,相对比较容易设置和提供能力满足程序的需要。
- 属性动画:在android 3.0(api等级11)中引入的属性动画系统,允许您对任何对象的属性进行动画处理,包括未呈现到屏幕上的属性。该系统是可扩展的,并允许自定义动画类型的属性。
帧动画
将动画资源文件作为图片控件(ImageView)的背景图(background)。
帧动画涉及知识点如下:
- AnimationDrawable: 用于创建逐帧动画的对象,由一系列可拖动对象,可用作视图对象的背景。
- isRunning() 是否正在运行
- stop() 停止动画
- start() 开始运行
帧动画核心代码
在drawable目录下,新增一个动画资源配置文件【animation-list节点下包含item子节点,item有两个属性,android:drawable=图像资源id,android:duration=周期】,如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> 3 <item android:drawable="@drawable/n0" android:duration="300"></item> 4 <item android:drawable="@drawable/n1" android:duration="300"></item> 5 <item android:drawable="@drawable/n2" android:duration="300"></item> 6 <item android:drawable="@drawable/n3" android:duration="300"></item> 7 <item android:drawable="@drawable/n4" android:duration="300"></item> 8 <item android:drawable="@drawable/n5" android:duration="300"></item> 9 <item android:drawable="@drawable/n6" android:duration="300"></item> 10 <item android:drawable="@drawable/n7" android:duration="300"></item> 11 <item android:drawable="@drawable/n8" android:duration="300"></item> 12 <item android:drawable="@drawable/n9" android:duration="300"></item> 13 </animation-list>
java设置代码如下:
1 private AnimationDrawable drawable; 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_drawable); 7 ImageView imageView= (ImageView) this.findViewById(R.id.ivLetter); 8 drawable= (AnimationDrawable) imageView.getBackground(); 9 drawable.start(); 10 } 11 12 @Override 13 public boolean onTouchEvent(MotionEvent event) { 14 if(event.getAction()==MotionEvent.ACTION_DOWN){ 15 if(drawable.isRunning()) { 16 drawable.stop(); 17 }else{ 18 drawable.start(); 19 } 20 } 21 return super.onTouchEvent(event); 22 }
补间动画
补间动画,又称渐变动画是指定义起始状态,结束状态,中间状态等,然后其他部分由程序自动生成,从而形成动画。
补间动画涉及知识点如下:
- TranslateAnimation 平移动画 控制对象位置的动画。
- RotateAnimation 旋转动画 控制对象旋转的动画。这个旋转需要放置在xy平面上。您可以指定中心要使用的点,其中(0,0)是左上角。如果未指定,则(0,0)为默认旋转点。
- ScaleAnimation 缩放动画 控制对象的比例尺的动画。您可以指定点用于缩放中心。
- AlphaAnimation 透明度动画 控制对象的alpha级的动画,通过更改透明度属性,对于对象的淡入淡出,这是一个很有用的方法。
- AnimationSet 动画集合 上述动画可以组合使用。
- setFillAfter(true); 设置动画结束后的填充
- setDuration(2000); 动画周期 setRepeatCount(2); 重复次数
- setRepeatMode(Animation.REVERSE); 重复模式
补间动画核心代码如下:
1 /** 2 * 平移 3 * @param v 4 */ 5 protected void transfer_click(View v){ 6 7 //参数是平移的起始坐标和结束坐标(起始X轴位置,