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 ...
随机推荐
- 026_如何在MAC下输入主要国家货币符号?
由于出国旅游啥的经常会记录一些东西,不避免的会遇到各种货币符号 一. 人民币: ¥(sogo输入法切换到中文模式,然后"shift键 + 4"即可) 美元: $(sogo输入法切换 ...
- thinkphp5---join联合查询
使用thinkphp3.2进行联合查询,join联合查询: $list = M('document as d') ->join('tp_admin_column as c on d.cid = ...
- redis连接池——JedisPool和JedisCluster的介绍与使用
目录 Jedis使用方式的介绍 Redis连接池介绍 创建连接池配置文件 单机版的Redis连接池 集群版的Redis连接池 总结 Jedis使用方式的介绍 Jedis就是Java实现的操作Redis ...
- 关于/r与/n 以及 /r/n 的区别总结
应该说还是区别的,\r就是回到行首,\n就是到下一行的,但是一般我们输出程序时,看不到明显的差别的 '\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格.通常用的Enter是两个加起来 ...
- [LeetCode] 242. Valid Anagram 验证变位词
Given two strings s and t , write a function to determine if t is an anagram of s. Example 1: Input: ...
- POJ 1458 Common Subsequence(最长公共子序列)
题目链接Time Limit: 1000MS Memory Limit: 10000K Total Submissions: Accepted: Description A subsequence o ...
- python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件
描述:将指定路径下的某文件夹备份到一个zip文件 代码: #!/usr/bin/python # -*- coding: UTF-8 -*- # backupToZip - Copies an ent ...
- 如何在运行时更改JMeter的负载
在某些情况下,能够在不停止测试的情况下更改性能测试产生的负载是有用的或必要的.这可以通过使用Apache JMeter™的恒定吞吐量计时器和Beanshell服务器来完成.在这篇文章中,我们将介绍如何 ...
- Ubuntu下载搜狗输入法
实在...因为百度上写的就很好了,所以这里就直接“链”了.. https://jingyan.baidu.com/article/2d5afd6933a67b85a2e28e9f.html
- (转)AS3正则:元子符,元序列,标志,数量表达符
(转)AS3正则:元子符,元序列,标志,数量表达符: AS3正则:元子符,元序列,标志,数量表达符 七月 4th, 2010 归类于 AS3前端技术 作者Linkjun 进行评论 as3正则:元子符, ...