Android属性动画之第一重修炼总结
经过这两天对ObjectAnimator属性动画的学习,基本对Android提供的属性动画有了一定的认识,现在就为大家以一个类似扇形打开的效果做总结。
效果图:

下面就让我们用刚刚学到的属性动画效果,来实现上述的效果;首先我们需要准备8张小图标,将他们放到res目录下的drawable文件中,下面就是布局文件,布局文件很简单,就是把这8张小图标使用ImageView引入到界面中,需要注意的就是把做为开关的图标,放到最下面,下面就看一下具体的实现:
/**
* 属性动画综合小例子
* Created by Administrator on 2015/2/14.
*/
public class ThreeActivity extends Activity implements View.OnClickListener{
private int[] image = {R.id.imageA, R.id.imageB, R.id.imageC, R.id.imageD, R.id.imageE, R.id.imageF, R.id.imageG, R.id.imageH};
private String[] str = {"开关","相机","音乐","地址","月亮","个人信息","定位","短信"};
private List<ImageView> list = new ArrayList<ImageView>();
private Boolean flag = true;//图标打开、关闭控制
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_three);
init();
} public void init(){
for(int i = 0; i<image.length; i++){
ImageView imageView = (ImageView)findViewById(image[i]);
imageView.setOnClickListener(this);
list.add(imageView);
}
} @Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.imageA:
if(flag) {
startanim();//打开
}else{
closeanim();//收起
}
break;
case R.id.imageB:
Toast.makeText(this, str[1], Toast.LENGTH_SHORT).show();
break;
case R.id.imageC:
Toast.makeText(this, str[2], Toast.LENGTH_SHORT).show();
break;
case R.id.imageD:
Toast.makeText(this, str[3], Toast.LENGTH_SHORT).show();
break;
case R.id.imageE:
Toast.makeText(this, str[4], Toast.LENGTH_SHORT).show();
break;
case R.id.imageF:
Toast.makeText(this, str[5], Toast.LENGTH_SHORT).show();
break;
case R.id.imageG:
Toast.makeText(this, str[6], Toast.LENGTH_SHORT).show();
break;
case R.id.imageH:
Toast.makeText(this, str[7], Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
//打开隐藏的图标
public void startanim(){
for(int i = list.size()-1, j = 0; i >= 0; i--,j++){
ObjectAnimator animator = ObjectAnimator.ofFloat(list.get(i), "translationY", 0F, i*80F);
animator.setDuration(500);//持续时间
animator.setInterpolator(new BounceInterpolator());//自由落体效果
animator.setStartDelay(j * 100);//间隔时间
animator.start();
}
flag = false;
}
//关闭打开的图标
public void closeanim(){
for(int i = 0; i < list.size(); i++){
ObjectAnimator animator = ObjectAnimator.ofFloat(list.get(i), "translationY", i*80F, 0F);
animator.setDuration(500);
animator.setStartDelay(i * 100);
animator.start();
}
flag = true;
}
}
对于代码中的不易理解部分,我已进行了注释,相信大家一看便可以理解。最后为大家附一张实习后的效果:

Android属性动画之第一重修炼总结的更多相关文章
- 【转】android 属性动画之 ObjectAnimator
原文网址:http://blog.csdn.net/feiduclear_up/article/details/39255083 前面一篇博客讲解了 android 简单动画之 animtion,这里 ...
- Android属性动画完全解析(下)
转载:http://blog.csdn.net/guolin_blog/article/details/44171115 大家好,欢迎继续回到Android属性动画完全解析.在上一篇文章当中我们学习了 ...
- Android属性动画完全解析(上),初识属性动画的基本用法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43536355 在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系 ...
- Android属性动画完全解析(中)
转载:http://blog.csdn.net/guolin_blog/article/details/43536355 大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是 ...
- Android属性动画完全解析(上)
Android属性动画完全解析(上) 转载:http://blog.csdn.net/guolin_blog/article/details/43536355 在手机上去实现一些动画效果算是件比较炫酷 ...
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/44171115 大家好,欢迎继续回到Android属性动画完全解析.在上一篇文章当中 ...
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43536355 大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法 ...
- 详解Android属性动画
前面我们讲到的属性动画都是使用代码的定义方式:Android属性动画之ValueAnimator和Android属性动画之ObjectAnimator和AnimatorSet,下面我们再来看看使用XM ...
- Android属性动画之ValueAnimator的介绍
之前两篇博客,介绍的是ObjectAnimator作用与某一个控件的某一个属性.但我们的ValueAnimator它本身并不会作用与任何一个属性,它本身也不会提供任何一种动画.它简单的来说,就是一个数 ...
随机推荐
- CodeSoft随笔 批量连续打印,变量打印,codesoft条码
调用codeSoft的模板,实现批量连续打印. Code: 制作标签1.lab. 添加两个变量var0,var1. using LabelManager2; string strFile = Syst ...
- MSP430单片机的位操作
MSP430单片机属于RISC(Reduced Instruction Set Computer)型处理器.与普通的51单片机的复杂指令集相区别.普通51单片机执行一条指令最少需要12个时钟周期,而R ...
- JavaScript 基础第六天
一.引言 前面我们介绍了有关于内置对象的很多很多的API,讲道理得话如果想彻底的掌握那一定要经过一定的代码段沉淀下.大家可以想象一下,既然在程序中有很多的内置对象供我们使用,那我们是不是也可以定义一些 ...
- XtraBackup备份笔记
安装 rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm yum in ...
- go json null字段的转换
最近试了试go中对json null字段进行转换,代码如下: struct 转 json: package main import ( "encoding/json" " ...
- 黑马程序员+SQL基础(下)
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net ...
- MyEclipse 常用操作
1.使用JREBEL插件包实现myeclipse修改类文件后无须重启 在Myeclipse中的window-preferences(搜索tomcat)->然后到tomcatx.x下的-jdk中配 ...
- 使用NPOI将数据导出为word格式里的table
开发环境:VS2013+MySQL5.5+EF6+NPOI2.0.6 格式:WinForm+CodeFirst PS:vs2013的CodeFirst很方便了啊 CodeFirst方式就不再赘述了. ...
- git/ssh捋不清的几个问题
主要是 windows 用户会遇到很多纠结的问题,linux/unix 用户属于这方面的高端用户,应该有能力处理此类问题,而且网络上也有很多解决方案,本文的授众是 windows 用户.由于今天配置了 ...
- (转)Babel-现在开始使用 ES6
在 2 月 20 号 ECMAScript 第六版就正式推出了,这门语言一直保持稳定快速的发展而且新功能也在慢慢被现在主流的 JavaScript 引擎所接受.不过要想在浏览器端或者 Node 端直接 ...