private void showCloseAnim() {
int size = viewList.size();
if (size % 2 == 0) {
//是偶数
for (int i = 0; i < size; i++) {
if (i < size / 2) {
//坐标轴下边
AnimatorSet set = new AnimatorSet();
double x = -Math.cos(Math.PI * (size - 1 - 2 * i) / (4 * size - 4)) * 600;
double y = Math.sin(Math.PI * (size - 1 - 2 * i) / (4 * size - 4)) * 600;
set.playTogether(ObjectAnimator.ofFloat(viewList.get(i), "translationX", (float) x, 0),
ObjectAnimator.ofFloat(viewList.get(i), "translationY", (float) y, 0));
set.setInterpolator(new BounceInterpolator());
set.setDuration(500).setStartDelay(100 * i);
set.start(); } else {
//坐标轴上边
AnimatorSet set = new AnimatorSet();
double x = -Math.cos(Math.PI * (2 * i - size + 1) / (4 * size - 4)) * 600;
double y = -Math.sin(Math.PI * (2 * i - size + 1) / (4 * size - 4)) * 600;
set.playTogether(ObjectAnimator.ofFloat(viewList.get(i), "translationX", (float) x, 0),
ObjectAnimator.ofFloat(viewList.get(i), "translationY", (float) y, 0));
set.setDuration(500).setStartDelay(100 * i);
set.start();
}
} } else {
//是奇数
}
} private void showOpenAnim() {
int size = viewList.size();
if (size % 2 == 0) {
//是偶数
for (int i = 0; i < size; i++) {
if (i < size / 2) {
//坐标轴下边
AnimatorSet set = new AnimatorSet();
double x = -Math.cos(Math.PI * (size - 1 - 2 * i) / (4 * size - 4)) * 600;
double y = Math.sin(Math.PI * (size - 1 - 2 * i) / (4 * size - 4)) * 600;
set.playTogether(ObjectAnimator.ofFloat(viewList.get(i), "translationX", 0, (float) x),
ObjectAnimator.ofFloat(viewList.get(i), "translationY", 0, (float) y),
ObjectAnimator.ofFloat(viewList.get(i), "alpha", 0, 1).setDuration(2000));
set.setDuration(500).setStartDelay(100 * i);
set.start(); } else {
//坐标轴上边
AnimatorSet set = new AnimatorSet();
double x = -Math.cos(Math.PI * (2 * i - size + 1) / (4 * size - 4)) * 600;
double y = -Math.sin(Math.PI * (2 * i - size + 1) / (4 * size - 4)) * 600;
set.playTogether(ObjectAnimator.ofFloat(viewList.get(i), "translationX", 0, (float) x),
ObjectAnimator.ofFloat(viewList.get(i), "translationY", 0, (float) y),
ObjectAnimator.ofFloat(viewList.get(i), "alpha", 0, 1).setDuration(2000));
set.setDuration(500).setStartDelay(100 * i);
set.start();
}
} } else {
//是奇数
}
}

一个发散动画的菜单控件(主要记录控件x,y坐标的运动状况)的更多相关文章

  1. IOS的一个带动画的多项选择的控件(一)

    先上效果图: 这个程序分2个层次,一个是顶部的带UITextField的bar,一个是下拉选择的view,下拉选择的view带有4个自己定义的UIView 我们先定义一个UIViewControlle ...

  2. 一个类似抖音 APP 拍摄按钮效果的控件

    TouchButton 一个类似抖音 APP 拍摄按钮效果的控件 效果图预览 用法 <net.angrycode.library.TouchButton android:id="@+i ...

  3. WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法

    原文:WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 问题描述 今天发现如果我想在一个TextBlock弄一个右键菜单,并且使用Command绑定,结果发 ...

  4. swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)

    swing实现QQ登录界面1.0( 实现了同一张图片只加载一次).(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件) 代码思路分析: 1.(同一张图片仅仅需要加载一次就够了,下 ...

  5. 斗天斗地斗控件 -- 与 Flyout 控件的斗争史

    前言 在淘宝的收藏夹页面本地化过程中,收藏的宝贝和店铺的分类展示通过一个下拉菜单的方式进行展示.如果单独为此从头重写一个控件,那么不但费时费力,包括所有的动画方式都要全新设计,而且还容易出 bug.好 ...

  6. 关于StatusStrip控件和StatusBar控件的小试

    今天,在网上查找资料,突然看到一个例子,但例子中提及的StatusBar控件,我发现在vs控件压根不存在,我就郁闷了,于是上网查找才知道,现在这个控件已经被StatusStrip控件给吞了,Statu ...

  7. 重新想象 Windows 8 Store Apps (1) - 控件之文本控件: TextBlock, TextBox, PasswordBox, RichEditBox, RichTextBlock, RichTextBlockOverflow

    原文:重新想象 Windows 8 Store Apps (1) - 控件之文本控件: TextBlock, TextBox, PasswordBox, RichEditBox, RichTextBl ...

  8. winform窗体 控件【公共控件】

    Button   按钮 布局 AutoSize    自动匹配尺寸 Location     确定控件位置,相对左上角坐标 Margin       控件与控件之间的距离 Size           ...

  9. DevExpress09、SimpleButton、CheckButton、DropDownButton、HScrollBar控件和VScrollBar控件

    SimpleButton控件 使用SimpleButton控件, 创建一个Button按钮, 可以通过其Image属性添加图片: 该控件与WinForm自带的Button按钮类似: 效果如下: Che ...

随机推荐

  1. WebDriver API——浏览器控制暨如何学习webdriver API

    在测试过程中我们可能需要对浏览器进行控制,大小控制啊,刷新页面啊,前进后退等等,最常用的两个接口是window和Navigation. 我们最常用的就是这4个,那么你是否感兴趣它们后面是什么,它们是怎 ...

  2. android实现文字渐变效果和歌词进度的效果

    要用TextView使用渐变色,那我们就必须要了解LinearGradient(线性渐变)的用法. LinearGradient的参数解释 LinearGradient也称作线性渲染,LinearGr ...

  3. 配置JDK和Tomcat环境变量(转)

    1.安装JDK 安装好JDK后,再配置JDK的环境变量:在“我的电脑”上点右键—>“属性”—>“高级”—> “环境变量(N)”. 新建系统变量JAVA_HOME:C:/Program ...

  4. 用php描述二分查找法

    //二分查找 $arr = array(0,1,2,3,4,5,6,7,8,9); function bin_sch($array, $low, $high, $k){ if ($low <= ...

  5. Hibernate 模糊查询 ' %?% ' SQL执行异常

    今天我在使用Hibernate 的SQL预编译之后注入参数的形式写了一条模糊查询语句.刚开始我是这么写的

  6. [CROATIAN2009] OTOCI

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1180 [算法] 动态树维护森林连通性 时间复杂度 : O(NlogN ^ 2) [代 ...

  7. 关闭页面,window.onunload事件未执行的原因

    1.问题描述: JS中定义widow.onunload= function(),页面关闭时,logout()函数未执行. window.onunload = function() { logout() ...

  8. bzoj 1086 [SCOI2005]王室联邦——思路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1086 于是去看了题解. 要回溯的时候再把自己加进栈里判断.这样才能保证剩下的可以通过自己连到 ...

  9. AndroidStudio删除项目

    右键左上角的 项目名 右键 > delete 磁盘里的文件还需要手动删除

  10. c# aop讲解

    先说下场景,C#中为什么要使用Aop,而我又是在哪里使用Aop? 本人只是想拦截实体类的Set的方法,然后在Set之前,调用一下其它方法,把值赋给另一个对象. 而我做的都是在实体类的基类里处理: 比如 ...