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

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

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. bind 0.0.0.0的作用是什么呢?

    背景描述: 今天在看redis的内容,看到同事在配置文件中将bind配置为0.0.0.0进行监听,不明白什么意思就查询了下,在此记录下. 解释: 0.0.0.0在服务器的环境中,指的就是服务器上所有的 ...

  2. 泡泡一分钟:Tightly-Coupled Aided Inertial Navigation with Point and Plane Features

    Tightly-Coupled Aided Inertial Navigation with Point and Plane Features 具有点和平面特征的紧密耦合辅助惯性导航 Yulin Ya ...

  3. [转]npm 遇到 write access的问题怎么办

    ubuntu下使用 npm install -g 可能会遇到这个问题. 链接地址:https://www.jianshu.com/p/31744aa44824

  4. LODOP表格table简短问答及相关博文

    LODOP打印表格超文本输出表格:ADD_PRINT_HTML.ADD_PRINT_HTM.ADD_PRINT_TABLE.ADD_PRINT_TBURL打印表格带页头页尾 参考样例15 http:/ ...

  5. [简短问答]C-Lodop中一些测试用的地址

    测试访问:访问http://localhost:8000欢迎页面试试进入欢迎页面http://localhost:8000,点欢迎页面的预览试试 查看下c-lodop启动界面,在设置里查看下当前启动的 ...

  6. [LeetCode] 156. Binary Tree Upside Down 二叉树的上下颠倒

    Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that ...

  7. python jieba

    https://www.cnblogs.com/jiayongji/p/7119065.html 安装 pip install jieba 简单用法 结巴分词分为三种模式:精确模式(默认).全模式和搜 ...

  8. LeetCode 1051. 高度检查器(Height Checker) 28

    1051. 高度检查器 1051. Height Checker 题目描述 学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列. 请你返回至少有多少个学生没有站在正确位置数量.该人数指的是 ...

  9. [转帖]AMD Zen霄龙中国版:海光x86拿下加解密全球第一

    AMD Zen霄龙中国版:海光x86拿下加解密全球第一 http://www.eetop.cn/cpu_soc/6946203.html 其实技术发展都是先模仿 剽窃 再自我创新的 要加以鼓励 总比 ...

  10. 【C++札记】函数重载

    概述 函数重载指在相同作用域中多个函数名相同,函数的形参不同. 遵循规则: 1.函数名相同 2.函数的参数,类型,个数或顺序不一样都可以构成重载. 3.函数返回值得类型不同不构成重载,编译直接报错,存 ...