Android属性动画备忘

<pre name="code" class="html"><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Android属性动画Property Animation,详细介绍看郭大神博客:</span><a target=_blank href="http://blog.csdn.net/guolin_blog/article/details/43536355" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">点击打开链接</a>
 

这里把一些博客汇总了下,加上自己总结的部分内容,作为自己的备忘,方便随时查找大笑

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

一些相关内容:

补间动画xml文件放在res/anim目录下;

属性动画xml文件放在res/animator目录下。

 

Animator:属性动画基类

AnimatorSet:属性动画集合

ValueAnimator:值动画

ObjectAnimator:对象动画

AnimatorListener:监听器

AnimatorListenerAdapter:单独监听某个事件的监听器

XML实现属性动画:

文件的根节点必须是下面3个其中一个:

<set>                         :对应AnimatorSet(属性动画集合)

<objectanimator>      :对应ObjectAnimator(对象属性动画)

<animator>                :对应ValueAnimator(值属性动画)

<set>标签属性:

android:ordering="together | squentially"  -同时进行 | 顺序进行

<set>子标签:

可以包含<set>、< objectanimator >和<animator>三种标签;

< objectanimator>标签属性:

    android:propertyName="string"

    android:propertyXName="string"

    android:propertyYName="string"

    android:pathData=""

    android:interpolator=""              -动画插值器

    android:duration="int"        -动画持续时间

    android:startOffset="int"     -延迟播放时间

    android:repeatCount="int" -动画循环次数

   android:repeatMode="[restart|reverse]"      -动画循环模式

   android:valueFrom="float|int|color"              -起始值

   android:valueTo="float|int|color"            -结束值

   android:valueType="[intTyle|floatType]"

其中android:propertyName常用的值有:

1)translationX 和 translationY:这两个属性控制了View所处的位置,     它们的值是由layout容器设置的,是相对于坐标原点(0,0左上角)的一个偏移量。

2)rotation, rotationX 和 rotationY:控制View绕着轴点(pivotX和pivotY)旋转。它的表现跟Tween Animation中的RotateAnimation不一致。

RotateAnimation 的旋转,表现为平面的旋转

    而rotationX、Y 旋转,是立体的旋转,默认是以View的中心点,做rotation(x,y)过中心点的直线,面向该直线进行翻转

3)scaleX 和 scaleY:控制View基于pivotX和pivotY的缩放。

4)pivotX 和 pivotY:旋转的轴点和缩放的基准点,默认是View的中心点。

5)x 和 y:描述了view在其父容器中的最终位置,是左上角坐标和偏移量(translationX,translationY)的和。

6)aplha:透明度,1是完全不透明,0是完全透明。

以上这些属性与Tween Animation的动画属性值差不多

动画插值器常用的值有:

<animator>标签属性:

    android:interpolator=""        -动画插值器

    android:duration=""             -动画持续时间

    android:startOffset=""         -延迟播放时间

    android:repeatCount=""      -动画重复次数

    android:repeatMode=""              -动画重复行为

    android:valueFrom=""         -起始值

    android:valueTo=""                     -结束值

    android:valueType=""

代码中调用:

TextView tv1 = (TextView) findViewById(R.id.v1);
AnimatorSet set = (AnimatorSet)AnimatorInflater.loadAnimator(this, R.animator.set_anim);
set.setTarget(tv1);
set.start();

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

上面用XML实现的属性动画,也可以在代码中实现:

ObjectAnimator:对象动画

TextView tv5 = (TextView) findViewById(R.id.v1);
ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(tv5, "rotation", 0, 180);
objectAnimator2.setDuration(2000);
objectAnimator2.setStartDelay(2000);
objectAnimator2.setRepeatCount(3);
objectAnimator2.setRepeatMode(Animation.REVERSE);
objectAnimator2.setInterpolator(new BounceInterpolator());
objectAnimator2.start();

ValueAnimator:属性动画

ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f);
valueAnimator.setDuration(3000);//持续时间
valueAnimator.setStartDelay(2000);//延迟播放时间
valueAnimator.setRepeatCount(2);//循环次数
valueAnimator.setRepeatMode(Animation.RESTART);
valueAnimator.start();
AnimatorSet:属性动画集合

  • after(Animator anim)   将现有动画插入到传入的动画之后执行
  • after(long delay)   将现有动画延迟指定毫秒后执行
  • before(Animator anim)   将现有动画插入到传入的动画之前执行
  • with(Animator anim)   将现有动画和传入的动画同时执行
ObjectAnimator moveIn = ObjectAnimator.ofFloat(tv6, "translationX", -500f, 0f);
ObjectAnimator rotate = ObjectAnimator.ofFloat(tv6, "rotation", 0f, 360f);
ObjectAnimator fadeInOut = ObjectAnimator.ofFloat(tv6, "alpha", 1f, 0f, 1f);
AnimatorSet animSet = new AnimatorSet();
animSet.play(rotate).with(fadeInOut).after(moveIn);
animSet.setDuration(5000);
animSet.start();

Interpolator:插入器

参考博客:点击打开链接

常见插值器:

AccelerateInterpolator 加速插值器

AccelerateDecelerateInterpolator 加速减速插值器

LinearInterpolator 线性插值器

BounceInterpolator弹跳插值器

AnticipateInterpolator回荡秋千插值器

AnticipateOvershootInterpolator

CycleInterpolator正弦周期变化插值器

OvershootInterpolator

代码设置插值器:

anim.setInterpolator(new BounceInterpolator());

xml中设置插值器:

android:interpolator="@android:anim/bounce_interpolator"

动画监听事件

objectAnimator2.addListener(new AnimatorListener() {
				
	@Override
	public void onAnimationStart(Animator arg0) {
		//动画开始的时候调用
					
	}
				
	@Override
	public void onAnimationRepeat(Animator arg0) {
		//动画重复执行的时候调用
					
	}
				
	@Override
	public void onAnimationEnd(Animator arg0) {
		//动画结束的时候调用
					
	}
				
	@Override
	public void onAnimationCancel(Animator arg0) {
		//动画被取消的时候调用
					
	}
});

如果只需监听一个事件,可以用AnimatorListenerAdapter

objectAnimator2.addListener(new AnimatorListenerAdapter() {

	@Override
	public void onAnimationStart(Animator animation) {
					
	}
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值