Android动画

一、动画基本四中

Android动画_第1张图片


Tween Animation 变换动画

Android动画_第2张图片

Android动画_第3张图片

Android动画_第4张图片

Android动画_第5张图片

Android动画_第6张图片

Android动画_第7张图片

从布局 设置




    
    

loadAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha);
			image.startAnimation(loadAnimation);

缩放动画

Android动画_第8张图片
从布局加载




    

代码调用

loadAnimation = AnimationUtils.loadAnimation(this, R.anim.scale);
			image.startAnimation(loadAnimation);

位移动画

Android动画_第9张图片
配置文件




    

代码实现、

loadAnimation = AnimationUtils
					.loadAnimation(this, R.anim.translate);
			image.startAnimation(loadAnimation);

旋转动画

Android动画_第10张图片
布局文件




    


代码实现

loadAnimation = AnimationUtils.loadAnimation(this, R.anim.rotate);
			image.startAnimation(loadAnimation);

组合动画

Android动画_第11张图片

布局

两个布局分别加载后串联在一起


代码实现

loadAnimation = AnimationUtils
					.loadAnimation(this, R.anim.translate);
			image.startAnimation(loadAnimation);
			final Animation loadAnimation2 = AnimationUtils.loadAnimation(this,
					R.anim.rotate);
			//设置动画监听器
			loadAnimation.setAnimationListener(new AnimationListener() {

				@Override
				public void onAnimationStart(Animation arg0) {
					// TODO Auto-generated method stub

				}

				@Override
				public void onAnimationRepeat(Animation arg0) {
					// TODO Auto-generated method stub

				}

				@Override
				public void onAnimationEnd(Animation arg0) {
					// TODO Auto-generated method stub
					image.startAnimation(loadAnimation2);
				}
			});


组合动画二

Android动画_第12张图片


配置文件配在一起




    
    


代码实现

loadAnimation = AnimationUtils.loadAnimation(this,
					R.anim.continue_anim);
			image.startAnimation(loadAnimation);

组合动画三

Android动画_第13张图片

不用配置文件,用代码实现效果

AlphaAnimation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);
			alphaAnimation.setDuration(100);
			alphaAnimation.setRepeatCount(10);
			//倒叙重复REVERSE  正序重复RESTART
			alphaAnimation.setRepeatMode(Animation.REVERSE);
			image.startAnimation(alphaAnimation);

组合动画四

Android动画_第14张图片

zoomin.xml布局文件和zoomout.xml布局文件



  
  
  




    

    


代码实现

Intent intent=new Intent(MainActivity.this,MainActivity2.class);
			startActivity(intent);
			overridePendingTransition(R.anim.zoom_in,R.anim.zoom_out);

布局动画

Android动画_第15张图片

案例,listview条目随机显示动画

布局文件

用的上面的

代码实现

 listView.setAdapter(adapter);
//	    布局动画控制器
	    LayoutAnimationController lac=new LayoutAnimationController(AnimationUtils.loadAnimation(this, R.anim.zoom_in));
//	    设置顺序
	    lac.setOrder(LayoutAnimationController.ORDER_NORMAL);
	    listView.setLayoutAnimation(lac);
	    listView.startLayoutAnimation();

帧动画

布局文件,是放在drable文件夹下




    
    
    
    
    
    

代码实现

image.setImageResource(R.drawable.anim_list);	


属性动画

ObjectAnimator用法

传动动画是系统不断调用ondraw方法去重绘动画很耗资源。传统的animation动画的监听事件还在原来的位置。而属性动画则是getset方法等实现

ObjectAnimator.offLoat(imageview控件对象,“translationX方向偏移量”,0F起始位置,200F终止位置).setDuration(1000).start()

ObjectAnimator.offLoat(imageview控件对象,“rotation旋转”,0F起始位置,360F终止位置).setDuration(1000).start()

上面连个是同时进行的

PropertyValuesHolder p1=PropertyValuesHolder .offLoat(“rotation旋转”,0F起始位置,360F终止位置)

PropertyValuesHolder p2=PropertyValuesHolder .offLoat(“translationX”,0F起始位置,200F终止位置)

ObjectAnimator.ofPropertyValuesHolder(imageview,p1,p2).setDuration(1000).start()

和上面的效果是一样的,但内部做了优化效率更高


使用动画集来控制

Android动画_第16张图片

效果和上面的一样,可以调用playSequentially方法是按顺序播放,也可以set.play(animator2).with(animator3);set.play(animator1).with(animator2)先移动后旋转

动画添加事件

Android动画_第17张图片

也可以添加单个事件

Android动画_第18张图片


Valueanimator动画

Android动画_第19张图片

Android动画_第20张图片

Android动画_第21张图片

实例

Android动画_第22张图片

自定义数值

PointF泛型

Android动画_第23张图片


你可能感兴趣的:(Android开发笔记)