Animation效果控制(一)

原创 2013年12月04日 09:48:37

该类提供了旋转、移动、伸展和淡出等等效果
1、Alpha——淡入淡出
2、Scale——缩放
3、Rotate——旋转
4、Translate——移动

 

创建Tweened Animations的步骤
1、创建一个AnimationSet对象
2、根据需要创建相应的Animation对象
3、根据软件动画的需求,为Animation对象设置相应的数据
4、将Animation对象添加到AnimationSet对象当中
5、使用控件对象执行AnimationSet

 

private class AlphaButtonListener implements OnClickListener {
	@Override
	public void onClick(View view) {
		//创建一个AnimationSet对象
		AnimationSet animationSet = new AnimationSet(true);
		//创建一个AlphaAnimation对象,1表示完全不透明,0表示透明,从不透明到完全透明
		AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
		//设置动画执行的时间(单位:毫秒)
		alphaAnimation.setDuration(1000);
		//将AlphaAnimation对象添加到AnimationSet当中
		animationSet.addAnimation(alphaAnimation);
		//使用ImageView的startAnimation方法开始执行动画
		imageView.startAnimation(animationSet);
	}
}

 

private class RotateButtonListener implements OnClickListener {
	@Override
	public void onClick(View view) {
		AnimationSet animationSet = new AnimationSet(true);	/*Animation.RELATIVE_TO_PARENT,相对于父控件,1f表示整个父控件的宽度或者是高度,0.5f表示父控件的高度或者宽度的一半,Animation.RELATIVE_TO_SELF,相对于自身控件,前面两个参数是旋转的角度,后面四个参数用来定义旋转的圆心*/
		RotateAnimation rotateAnimation = new RotateAnimation(0, 360,
				Animation.RELATIVE_TO_PARENT, 1f,
				Animation.RELATIVE_TO_PARENT, 0f);
		rotateAnimation.setDuration(5000);
		animationSet.addAnimation(rotateAnimation);
		imageView.startAnimation(animationSet);
	}
}

 

private class ScaleButtonListener implements OnClickListener {
	@Override
	public void onClick(View view) {
		//表示动画效果Interpolator共享
		AnimationSet animationSet = new AnimationSet(true);
		//前四个参数表示从原来大小的100%缩小到10%,后四个参数是为确定“中心点”
		ScaleAnimation scaleAnimation = new ScaleAnimation(1, 0.1f, 1,
				0.1f, Animation.RELATIVE_TO_SELF, 0.5f,
				Animation.RELATIVE_TO_SELF, 0.5f);
		animationSet.addAnimation(scaleAnimation);
		//动画效果推迟1秒钟后启动
		animationSet.setStartOffset(1000);
		//如果值为true,控件则保持动画结束的状态
		animationSet.setFillAfter(true);
		//如果值为false,控件则保持动画结束的状态
		animationSet.setFillBefore(false);
		//动画效果重复3次
		//animationSet.setRepeatCount(3);
		animationSet.setDuration(2000);
		imageView.startAnimation(animationSet);
	}
}

 

private class TranslateButtonListener implements OnClickListener {
	@Override
	public void onClick(View view) {
		AnimationSet animationSet = new AnimationSet(true);
		/*前四个参数分别设置X轴的开始位置,设置X轴的结束位置
		后四个参数分别设置Y轴的开始位置,设置Y轴的结束位置*/
		TranslateAnimation translateAnimation = new TranslateAnimation(
				Animation.RELATIVE_TO_SELF, 0f, 
				Animation.RELATIVE_TO_SELF,
				0.5f, Animation.RELATIVE_TO_SELF, 0f,
				Animation.RELATIVE_TO_SELF, 1.0f);
		translateAnimation.setDuration(1000);
		animationSet.addAnimation(translateAnimation);
		imageView.startAnimation(animationSet);
	}
}

 

 利用配置文件xml设置animation(可以复用,类似于CSS样式设定)
1、在res文件夹下面建立一个名为anim的文件夹(控制动画的文件夹)
2、创建xml文件,首先加入set标签
3、在该标签中加入rotate、alpha、scale、translate
4、在代码中使用AnimationUtil当中装载xml文件,并生成Animation对象

 

android:toDegrees="+350" //角度为正角
android:pivotX="50"  //使用绝对位置定位
android:pivotX="50%" //使用相对于控件本身定位
android:pivotX="50%p" //相对于控件的父控件定位

多个效果可以加载到同一个xml文件中,这样可以同时处理多个效果

 

建立文件alpha.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
	android:interpolator="@android:anim/accelerate_interpolator"
	android:shareInterpolator="true">	
	<alpha 
		android:fromAlpha="1.0"
		android:toAlpha="0.0"
		android:startOffset="500"
		android:duration="2000" />
	<rotate android:fromDegrees="0"
		android:toDegrees="360"
		android:pivotX="50%"
		android:pivotY="50%"
		android:duration="2000" />
</set>

 

private class AlphaButtonListener implements OnClickListener {
	@Override
	public void onClick(View view) {
		//使用AnimationUtils装载动画设置文件
//		Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.alpha);
//		imageView.startAnimation(animation);
		
		//下面的代码和上面的效果是一致的
		AnimationSet animationSet = new AnimationSet(false);
		AlphaAnimation alpha = new AlphaAnimation(1.0f, 0.0f);
		alpha.setInterpolator(new DecelerateInterpolator());
		RotateAnimation rotate = new RotateAnimation(0, 360,
				Animation.RELATIVE_TO_SELF, 0.5f,
				Animation.RELATIVE_TO_SELF, 0.5f);
		rotate.setInterpolator(new AccelerateInterpolator());
		animationSet.addAnimation(alpha);
		animationSet.addAnimation(rotate);
		animationSet.setDuration(2000);
		animationSet.setStartOffset(500);
		imageView.startAnimation(animationSet);
	}
}

 

 Interpolator类定义了动画变化的速率


android:interpolator=""  //设置动画变化速率
android:shareInterpolator="true" //共享动动画变化速率

 

Frame-by-Frame Animations——帧


Drawable序列,这些Drawable可以按照指定的时间间歇一个一个显示

在res/drawable-ldpi目录下创建anim_nv.xml文件

 

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
	android:oneshot="false">
	<item android:drawable="@drawable/nv1" android:duration="500" />
	<item android:drawable="@drawable/nv2" android:duration="500" />
	<item android:drawable="@drawable/nv3" android:duration="500" />
	<item android:drawable="@drawable/nv4" android:duration="500" />
</animation-list>

 

 

private class ButtonListener implements OnClickListener{
	@Override
	public void onClick(View v) {
		imageView.setBackgroundResource(R.drawable.anim_nv);
		AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getBackground();
		animationDrawable.start();
	}
}

 

 

1、LayoutAnimationController用于一个layout里面或是一个ViewGroup里面的控件设置动画效果
2、每个控件都有相同的动画效果
3、这些控件的动画效果在不同的时间显示出来
4、LayoutAnimationController可以在xml文件中设置,也可以在代码中进行设置

android Animation 效果控制(一)

该类提供了旋转、移动、伸展和淡出等等效果1、Alpha——淡入淡出2、Scale——缩放3、Rotate——旋转4、Translate——移动   创建Tweened Animations的步骤1...
  • hbiao68
  • hbiao68
  • 2016年09月07日 17:17
  • 105

Unity3D游戏开发之角色控制效果

在仙剑奇侠传四中,玩家可以通过鼠标右键来旋转场景(水平方向),按下前进键时角色将向着朝前(Forward)的方向运动,按下后退键时角色将向着朝后(Backword)的方向运动、当按下向左、向右键时角色...
  • u012856866
  • u012856866
  • 2014年05月11日 16:51
  • 1771

JS控制animation事件

#div1{width:100px; height:100px; background-color:#F00;} .slidein{-webkit-animation-duration:3s; -w...
  • kongjunchao159
  • kongjunchao159
  • 2015年08月06日 15:23
  • 2496

利用js动态控制animation动画

一般我们写css3 animation动画的时候都是把它们定死在某个值不能改变,其实在js中是有相应的对象可以达到动态控制keyframes关键帧的目的举个例子: 这个表盘效果,客户需要指针每个...
  • cztflove
  • cztflove
  • 2015年09月11日 17:39
  • 14086

css3实现图片划过一束光闪过效果

.img { display:block; position: relative; width:800px; height:450px; margin:0 auto;} .img:before { c...
  • xiaoya_syt
  • xiaoya_syt
  • 2016年08月30日 16:38
  • 1668

u3d 控制animation播放速度

using System.Collections; using System.Collections.Generic; using UnityEngine;public class AniSpeed ...
  • luoyikun
  • luoyikun
  • 2017年07月14日 09:42
  • 530

Unity用程序给Animator控制的某一个动画(AnimationClip)加一个动画事件(AnimationEvent)

Unity 项目,需要对一个玩家拔武器的动作中,实现武器挂点的切换(从背部 挂到手上)。 1. 一种方案,动画美术直接编辑动画,定位到要变化挂点的帧(比如24帧),在Events里添加一个动画事件...
  • zhenmu
  • zhenmu
  • 2016年10月22日 14:33
  • 4198

animation效果

//    CATransition *fanimation = [CATransition animation]; //    [fanimation setDuration:0.3]; // ...
  • liguanshu
  • liguanshu
  • 2013年09月01日 14:17
  • 296

动画特效十四:手风琴效果

在讲解JQuery特效的时候,我介绍过 手风琴效果; 这一节我讲解一下在iOS中的实现效果;相对于JQuery版本的动画,iOS中考虑的东西要多的多,先看看最终的效果图。 大家也许看到这个实现效...
  • sinat_27706697
  • sinat_27706697
  • 2015年10月23日 12:08
  • 1266

Android---动画机制(一)---View动画和帧动画

Android中的动画效果一直是人机交互中的一个非常重要的一个部分.接下来就让我研究研究Android中动画的特性分析等动画的分类 View动画 也是我们常说的补间动画 Frame动画 也是我们常说的...
  • Panda_Program
  • Panda_Program
  • 2017年01月15日 17:58
  • 193
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Animation效果控制(一)
举报原因:
原因补充:

(最多只允许输入30个字)