Android笔记(六十四) android中的动画——补间动画(tweened animation)
补间动画就是只需要定义动画开始和结束的位置,动画中间的变化由系统去补齐。
补间动画由一下四种方式:
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)的更多相关文章
- Android笔记(六十五) android中的动画——属性动画(propertyanimation)
补间动画只能定义起始和结束两个帧在“透明度”.“旋转”.“倾斜”.“位移”4个方面的变化,逐帧动画也只能是播放多个图片,无法满足我们日常复杂的动画需求,所以谷歌在3.0开始,推出了属性动画(prope ...
- Android笔记二十四.Android基于回调的事件处理机制
假设说事件监听机制是一种托付式的事件处理,那么回调机制则与之相反,对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,或者说事件监听器全然消失了,当用户在GUI控件上激发某个事件时,控 ...
- Android Studio精彩案例(六)《使用一个Demo涵盖补间动画所有知识》
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 元旦假期里,闲的无事,看到美团加载数据的动画,就突想写个Demo把动画知识集成一下.后来想了想,还是直接用一个Demo来把所有动画知识 ...
- android 帧动画,补间动画,属性动画的简单总结
帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...
- 高速上手Unity中最好的补间动画插件DFTween
出处:http://blog.csdn.net/u010019717 author:孙广东 时间:2015.3.17 23:00 DFTween 是一个在 Unity 游戏引擎中高 ...
- Android笔记(六十六) android中的动画——XML文件定义属性动画
除了直接在java代码中定义动画之外,还可以使用xml文件定义动画,以便重用. 如果想要使用XML来编写动画,首先要在res目录下面新建一个animator文件夹,所有属性动画的XML文件都应该存放在 ...
- Android笔记(十四) Android中的基本组件——按钮
Android中的按钮主要包括Button和ImageButton两种,Button继承自TextView,而ImageButton继承自ImageView.Button生成的按钮上显示文字,而Ima ...
- Android笔记(七十四) 详解Intent
我们最常使用Intent来实现Activity之间的转跳,最近做一个app用到从系统搜索图片的功能,使用到了intent的 setType 方法和 setAction 方法,网上搜索一番,发现实现转跳 ...
- Android笔记(六十二)网络框架volley
什么是Volley 很多时候,我们的APP都需要用到网络技术,使用HTTP协议来发送接收数据,谷歌推出了一个网络框架——volley,该框架适合进行数据量不大,但通信频繁的网络操作. 它的优点: (1 ...
随机推荐
- Swift编码总结5
1.UIWindow属性: 1>.- (void)becomeKeyWindow; // override point for sub ...
- 查找k8s版jenkins-slave官方镜像
官方镜像非常多,如果查找某个单词没有找到的话,可以换一个词查找,总之各种非常的多,带maven.djk.kubectl工具的镜像,都去试试吧, 从下面查找结果中可以看到,还有centos版的jenki ...
- LODOP条码二维码简短问答及相关博文
LODOP如何输出条码 条码输出 参考样例11 http://www.c-lodop.com/demolist/PrintSample11.html超文本表格中的条码参考样例47 http://www ...
- LeetCode,3. 无重复字符的最长子串
看了各位大神的,真是难堪,尤其是各种c++动不动就击败99%...我用python,换了三次算法,改了十几次bug,才击败5%....贴出来纪念下吧. 题目如下: 给定一个字符串,请你找出其中不含有重 ...
- python面试题100道
python 100道面试题 1.一行代码实现1--100之和 利用sum()函数求和 2.如何在一个函数内部修改全局变量 函数内部global声明 修改全局变量 3.列出5个python标准库 os ...
- Influx Sql系列教程八:query数据查询基本篇
前面几篇介绍了InfluxDB的添加,删除修改数据,接下来进入查询篇,掌握一定的SQL知识对于理解本篇博文有更好的帮助,下面在介绍查询的基础操作的同时,也会给出InfluxSql与SQL之间的一些差别 ...
- 第07组 Beta冲刺(2/4)
队名:秃头小队 组长博客 作业博客 组长徐俊杰 过去两天完成的任务:学习了很多东西 Github签入记录 接下来的计划:继续学习 还剩下哪些任务:后端部分 燃尽图 遇到的困难:自己太菜了 收获和疑问: ...
- 运行报错:'_TestResult' object has no attribute 'outputBuffer'
一.运行main函数,未生成测试报告,报错:'_TestResult' object has no attribute 'outputBuffer' 解决方式: 1.在HTMLTestReportCN ...
- TCP/IP学习笔记12-- IP协议基础
IP(internet protocol, 网际协议) IP相当于OSI参考模型中的第三层 -- 网络层. --网络层的下一层--数据链路层的主要作用是在 同一种数据链路 的节点之间进行包传递,而一旦 ...
- AOP实现事务和记录日志
AOP (Aspect Oriented Programming) 将非功能性需求从功能性需求中剥离出来,解耦并且解决代码复用的问题,比如说权限控制,事务控制,记录操作日志,全局捕获异常等 @Aspe ...