补间动画就是只需要定义动画开始和结束的位置,动画中间的变化由系统去补齐。

补间动画由一下四种方式:

1.AplhaAnimation——透明度动画效果

2.ScaleAnimation ——缩放动画效果

3.TranslateAnimation——位移动画效果

4.RotateAnimation——旋转动画效果

1.AplhaAnimation——透明度动画效果

AplhaAnimation的参数:

fromAlpha:动画开始时的透明度,0.0表示完全透明

toAlpha:动画结束时的透明度,1.0表示完全不透明

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.ImageView; public class MainActivity extends Activity implements OnClickListener { private ImageView iv;
private Button alpha; private AlphaAnimation alphaAnimation; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initView();
} private void initView() {
iv = (ImageView) findViewById(R.id.image);
alpha = (Button) findViewById(R.id.alpha);
alpha.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.alpha:
alphaAnimation = new AlphaAnimation(0.1f, 1);
alphaAnimation.setDuration(1000);
alphaAnimation.setRepeatCount(3);
alphaAnimation.setRepeatMode(Animation.REVERSE);
iv.startAnimation(alphaAnimation);
alphaAnimation.setAnimationListener(new AnimationListener() { @Override
public void onAnimationStart(Animation animation) {
Log.d("TTTT", "动画开始");
} @Override
public void onAnimationRepeat(Animation animation) {
Log.d("TTTT", "动画重复"); } @Override
public void onAnimationEnd(Animation animation) {
Log.d("TTTT", "动画结束"); }
}); break;
}
}
}

常用属性:

setRepeatCount(int repeatCount)——设置重复次数

setFillAfter(boolean)——动画执行完后是否停留在执行完的状态

setStartOffset(long startOffset)——执行前的等待时间

2.ScaleAnimation ——缩放动画效果

ScakeAnimation的参数:

fromX:动画起始时X坐标上的伸缩尺寸

toX:动画结束时X坐标上的伸缩尺寸

fromY:动画起始时Y坐标上的伸缩尺寸

toY:动画结束时Y坐标上的伸缩尺寸

pivotXType:动画在X轴相对于物件位置类型

pivotXValue:动画相对于物件的X坐标的开始位置

pivotYType:动画在Y轴相对于物件位置类型

pivotYValue:动画相对于物件的Y坐标的开始位置

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.Button;
import android.widget.ImageView; public class MainActivity extends Activity implements OnClickListener { private ImageView iv;
private Button scale; private ScaleAnimation scaleAnimation; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initView();
} private void initView() {
iv = (ImageView) findViewById(R.id.image);
scale = (Button) findViewById(R.id.scale);
scale.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.scale:
scaleAnimation = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setDuration(3000);
iv.startAnimation(scaleAnimation); break;
}
}
}

常用属性:

setRepeatCount(int repeatCount)——设置重复次数

setFillAfter(boolean)——动画执行完后是否停留在执行完的状态

setStartOffset(long startOffset)——执行前的等待时间

3.TranslateAnimation——位移动画效果

TranslateAnimation的参数

fromXDelta: 动画开始的点离当前View X坐标上的差值

toXDelta: 动画结束的点离当前View X坐标上的差值

fromYDelta: 动画开始的点离当前View Y坐标上的差值

toYDelta动画开始的点离当前View Y坐标上的差值

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView; public class MainActivity extends Activity implements OnClickListener { private ImageView iv;
private Button transla; private TranslateAnimation translaAnimation; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initView();
} private void initView() {
iv = (ImageView) findViewById(R.id.image);
transla = (Button) findViewById(R.id.transla);
transla.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.transla:
translaAnimation = new TranslateAnimation(0, 150, 0, 0);
translaAnimation.setDuration(1000);
iv.startAnimation(translaAnimation);
break;
}
}
}

常用属性:

animation.setDuration(long durationMillis)——设置动画持续时间
      animation.setRepeatCount(int i)——设置重复次数
      animation.setRepeatMode(Animation.REVERSE)——设置反方向执行

4.RotateAnimation——旋转动画效果

RotateAnimation的参数:

fromDegrees——旋转的开始角度。

toDegrees——旋转的结束角度。

pivotXType——X轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

pivotXValue——X坐标的伸缩值。

pivotYType——Y轴的伸缩模式,可以取值为ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。

pivotYValue——Y坐标的伸缩值。

package cn.lixyz.animator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.Button;
import android.widget.ImageView; public class MainActivity extends Activity implements OnClickListener { private ImageView iv;
private Button rotate; private RotateAnimation rotateAnimation; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initView();
} private void initView() {
iv = (ImageView) findViewById(R.id.image);
rotate = (Button) findViewById(R.id.rotate);
rotate.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rotate:
rotateAnimation = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
rotateAnimation.setDuration(2000);
iv.startAnimation(rotateAnimation); break;
}
}
}

常用方法:

animation.setRepeatCount(int repeatCount)——设置重复次数
              animation.setFillAfter(boolean)——动画执行完后是否停留在执行完的状态
              animation.setStartOffset(long
startOffset)——执行前的等待时间

Android笔记(六十四) android中的动画——补间动画(tweened animation)的更多相关文章

  1. Android笔记(六十五) android中的动画——属性动画(propertyanimation)

    补间动画只能定义起始和结束两个帧在“透明度”.“旋转”.“倾斜”.“位移”4个方面的变化,逐帧动画也只能是播放多个图片,无法满足我们日常复杂的动画需求,所以谷歌在3.0开始,推出了属性动画(prope ...

  2. Android笔记二十四.Android基于回调的事件处理机制

        假设说事件监听机制是一种托付式的事件处理,那么回调机制则与之相反,对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,或者说事件监听器全然消失了,当用户在GUI控件上激发某个事件时,控 ...

  3. Android Studio精彩案例(六)《使用一个Demo涵盖补间动画所有知识》

    转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 元旦假期里,闲的无事,看到美团加载数据的动画,就突想写个Demo把动画知识集成一下.后来想了想,还是直接用一个Demo来把所有动画知识 ...

  4. android 帧动画,补间动画,属性动画的简单总结

      帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...

  5. 高速上手Unity中最好的补间动画插件DFTween

     出处:http://blog.csdn.net/u010019717 author:孙广东      时间:2015.3.17   23:00 DFTween 是一个在 Unity 游戏引擎中高 ...

  6. Android笔记(六十六) android中的动画——XML文件定义属性动画

    除了直接在java代码中定义动画之外,还可以使用xml文件定义动画,以便重用. 如果想要使用XML来编写动画,首先要在res目录下面新建一个animator文件夹,所有属性动画的XML文件都应该存放在 ...

  7. Android笔记(十四) Android中的基本组件——按钮

    Android中的按钮主要包括Button和ImageButton两种,Button继承自TextView,而ImageButton继承自ImageView.Button生成的按钮上显示文字,而Ima ...

  8. Android笔记(七十四) 详解Intent

    我们最常使用Intent来实现Activity之间的转跳,最近做一个app用到从系统搜索图片的功能,使用到了intent的 setType 方法和 setAction 方法,网上搜索一番,发现实现转跳 ...

  9. Android笔记(六十二)网络框架volley

    什么是Volley 很多时候,我们的APP都需要用到网络技术,使用HTTP协议来发送接收数据,谷歌推出了一个网络框架——volley,该框架适合进行数据量不大,但通信频繁的网络操作. 它的优点: (1 ...

随机推荐

  1. 爬虫urllib2中Handler处理器和自定义Opener

    Handler处理器 和 自定义Opener opener是 urllib2.OpenerDirector 的实例,urlopen是一个特殊的opener(也就是模块已经构建好的). 但是基本的url ...

  2. spring boot集成mybatis分页插件

    mybatis的分页插件能省事,本章记录的是 spring boot整合mybatis分页插件. 1.引入依赖 <!-- 分页插件pagehelper --> <dependency ...

  3. 【翻译】Flink Table Api & SQL —— 数据类型

    本文翻译自官网:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/types.html Flink Table ...

  4. LeetCode_443. String Compression

    443. String Compression Easy Given an array of characters, compress it in-place. The length after co ...

  5. 使用Fiddler工具发送post请求(带有json数据)以及get请求(Header方式传参)

    Fiddler工具是一个http协议调试代理工具,它可以帮助程序员测试或调试程序,辅助web开发. Fiddler工具可以发送向服务端发送特定的HTTP请求以及接受服务器回应的请求和数据,是web调试 ...

  6. Spring Boot拦截器实现并和swagger集成后使用拦截器的配置问题

    1. 定义拦截器 LoginInterceptor LoginInterceptor.java是整个登录认证模块中的核心类之一,它实现了HandlerInterceptor类,由它来拦截并过滤到来的每 ...

  7. Appcrawler 参数实战经验

    https://testerhome.com/topics/10574 https://yq.aliyun.com/articles/277985 https://github.com/sevenir ...

  8. Git设定不合并的文件

    一个最简单的做法,通过添加.gitattributes文件来完成 1 在要被合并的分支中设置 git config --global merge.ours.driver true设置git配置项mer ...

  9. TCP粘包和拆包的定义,产生的原因以及解决方案

    TCP粘包:指发送方发送的若干数据包在接收方接收时粘成一团,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾 产生的原因: 1.发送方的原因:TCP默认使用Nagle算法,而Nagle算法主要做两件 ...

  10. [转帖]IOC Security: Indicators of Attack vs. Indicators of Compromise

    IOC Security: Indicators of Attack vs. Indicators of Compromise https://www.crowdstrike.com/blog/ind ...