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. BestCoder6 1002 Goffi and Squary Partition(hdu 4982) 解题报告

    题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?pid=1002&cid=530 (格式有一点点问题,直接粘 ...

  2. CI 模型公用查询函数

    /** * 多字段条件查询数据 * @param array $val array("name" => $value).name为要操作的字段,value为要操作的值 * @ ...

  3. 【应用】SVG动态 时钟

    没有做秒针,只做了分针和时针,5分钟以后来看应该可以看到效果╮(╯-╰)╭ <!DOCTYPE html> <html> <head> <title>& ...

  4. SPOJ MAXOR (分块 || 可持久化字典树 || 异或)(好题)

    You are given a sequence A[1], A[2], ..., A[N]. (0 ≤ A[i] < 231, 1 ≤ N ≤ 12000). A query is defin ...

  5. win10 下安装linux子系统

    一.开发人员选项 打开控制面板->程序与功能->启用或关闭windows功能 勾选    [适用于linux的windows子系统]    选项 打开win10设置 找到更新与安全 启动开 ...

  6. bzoj 2194 快速傅立叶之二 —— FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2194 如果把 a 序列翻转,则卷积得到的是 c[n-i],再把得到的 c 序列翻转即可. 代 ...

  7. HDU1074(状态压缩DP)

    Doing Homework Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  8. NLP | 自然语言处理 - 语言模型(Language Modeling)

    转:http://blog.csdn.net/lanxu_yy/article/details/29918015 为什么需要语言模型? 想象“语音识别”这样的场景,机器通过一定的算法将语音转换为文字, ...

  9. JS自动让手机调出软键盘,进行输入

    $('.search').click(function(){ $('input[type=text]').focus(); //让input框自动聚焦就可以让手机自动调出软键盘 });

  10. Oauth2的遇坑一点提示(Spring Security Oauth2 / Cloud)

    1)使用@EnableOAuth2Sso的网页客户端,登录是成功的可是总是像没成功一样. 提示错误:没有 症结:context-path没设置,或者设置为/(ROOT) 参考资料:https://sp ...