一个发散动画的菜单控件(主要记录控件x,y坐标的运动状况)
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坐标的运动状况)的更多相关文章
- IOS的一个带动画的多项选择的控件(一)
先上效果图: 这个程序分2个层次,一个是顶部的带UITextField的bar,一个是下拉选择的view,下拉选择的view带有4个自己定义的UIView 我们先定义一个UIViewControlle ...
- 一个类似抖音 APP 拍摄按钮效果的控件
TouchButton 一个类似抖音 APP 拍摄按钮效果的控件 效果图预览 用法 <net.angrycode.library.TouchButton android:id="@+i ...
- WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法
原文:WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 问题描述 今天发现如果我想在一个TextBlock弄一个右键菜单,并且使用Command绑定,结果发 ...
- swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)
swing实现QQ登录界面1.0( 实现了同一张图片只加载一次).(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件) 代码思路分析: 1.(同一张图片仅仅需要加载一次就够了,下 ...
- 斗天斗地斗控件 -- 与 Flyout 控件的斗争史
前言 在淘宝的收藏夹页面本地化过程中,收藏的宝贝和店铺的分类展示通过一个下拉菜单的方式进行展示.如果单独为此从头重写一个控件,那么不但费时费力,包括所有的动画方式都要全新设计,而且还容易出 bug.好 ...
- 关于StatusStrip控件和StatusBar控件的小试
今天,在网上查找资料,突然看到一个例子,但例子中提及的StatusBar控件,我发现在vs控件压根不存在,我就郁闷了,于是上网查找才知道,现在这个控件已经被StatusStrip控件给吞了,Statu ...
- 重新想象 Windows 8 Store Apps (1) - 控件之文本控件: TextBlock, TextBox, PasswordBox, RichEditBox, RichTextBlock, RichTextBlockOverflow
原文:重新想象 Windows 8 Store Apps (1) - 控件之文本控件: TextBlock, TextBox, PasswordBox, RichEditBox, RichTextBl ...
- winform窗体 控件【公共控件】
Button 按钮 布局 AutoSize 自动匹配尺寸 Location 确定控件位置,相对左上角坐标 Margin 控件与控件之间的距离 Size ...
- DevExpress09、SimpleButton、CheckButton、DropDownButton、HScrollBar控件和VScrollBar控件
SimpleButton控件 使用SimpleButton控件, 创建一个Button按钮, 可以通过其Image属性添加图片: 该控件与WinForm自带的Button按钮类似: 效果如下: Che ...
随机推荐
- c++变量定义
float **a 表示a是一个“指针的指针”,也可以理解为是一个二维数组的指针,***a具有类似的解释,可以理解为是一个三维数组的指针.
- 关于内存DC
使用CreateCompatibleDC 创建了内存DC之后,要再调用SelectObject选择一张位图放入此DC,然后才可以使用此DC进行绘制,之后绘制的数据会保存在内存中, 详细说明看后文. 在 ...
- @PathVariable @RequestParam @RequestHeader @CookieValue POJO Servlet API
- POJ2752(next原理理解)
Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15536 Ac ...
- vue render函数使用jsx语法 可以使用v-model语法 vuex实现数据持久化
render函数使用jsx语法: 安装插件 transform-vue-jsx 可以使用v-model语法安装插件 jsx-v-model .babelrc文件配置: vuex实现数据持久化 安装插 ...
- Lecture0 -- Introduction&&Linear Regression with One Variable
Introduction What is machine learning? Tom Mitchell provides a more modern definition: "A compu ...
- Valera and Swaps
题意: 定义 $f(p)$ 表示将 $p$ 序列变换为有序序列最少要交换多少次,给一 $1 \sim n$ 的排列 $a$ ,给一整数 $m$, 求问将 $a$ 最少交换多少次能得到 $p$ ,使得 ...
- 安装java之后,找不到tools.jar 和dt.jar
可能很多初学者和我一样,在初次接触java开发的过程中,急于看到最终的结果,匆匆在网上下载了jdk之后,点击安装,结果等安装完,开始配置classpath时,发现jdk/lib下面根本就没有 tool ...
- 201621123016《Java程序设计》第三周学习总结
1. 本周学习总结 1.初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1 写 ...
- html上传多图并预览
涉及知识:base64处理图片,ajax,js,thinkphp 效果图: 代码实现: html: <!DOCTYPE html> <html> <head> &l ...