回弹算法
来源:互联网 发布:cc域名多少钱一年 编辑:程序博客网 时间:2024/05/01 08:41
用于android按键的漂浮回弹动画,采用模拟方式实现
1.回弹幅度固定,动画总时间浮动,输入最终位置坐标,返回每毫秒的位置坐标
import java.util.*;public class bounce {public static ArrayList<Double> getStatus(int y) {double a = -0.01;double v = 0;ArrayList<Double> pos = new ArrayList<Double>();pos.add((double) y);for (int i = 0; i < 100; ++i) {pos.add(pos.get(pos.size() - 1) + v);v = v - a;}for (int i = 0; i < 100; ++i) {pos.add(pos.get(pos.size() - 1) + v);v = v + a;}while (pos.get(pos.size() - 1) + v > 0) {pos.add(pos.get(pos.size() - 1) + v);v = v + a;}Collections.reverse(pos);return pos;}public static void main(String[] args) {int y = 1000;ArrayList<Double> pos;pos = getStatus(y);for (int i = 0; i < pos.size(); ++i) {System.out.println(pos.get(i));}}}
2.回弹幅度比例固定,动画总时间固定,输入最终位置坐标,返回每毫秒的位置坐标
import java.util.*;public class bounce1 {public static ArrayList<Double> getStatus(int y) {double a = -0.01;double v = 3;ArrayList<Double> pos = new ArrayList<Double>();pos.add(0.0);for (int i = 0; i < 400; ++i) {pos.add(pos.get(pos.size() - 1) + v);v = v + a;}for (int i = 0; i < 100; ++i) {pos.add(pos.get(pos.size() - 1) + v);v = v - a;}double base = pos.get(pos.size() - 1);for (int i = 0; i < pos.size(); ++i) {pos.set(i, pos.get(i) / base * y);}return pos;}public static void main(String[] args) {int y = 500;ArrayList<Double> pos;pos = getStatus(y);for (int i = 0; i < pos.size(); ++i) {System.out.println(pos.get(i));}}}
1.回弹幅度固定,动画时间浮动
0 0
- 回弹算法
- 回弹ScrollView
- Android仿IOS回弹效果 ScrollView回弹
- ListView下拉回弹刷新
- ListView下拉回弹刷新
- 多角度回弹
- ViewPager回弹效果
- ListView下拉回弹刷新
- ScrollView拖动回弹效果
- 动画 回弹效果
- 球下落回弹
- viewpager取消回弹效果
- 设置UIWebView不可回弹
- ScrollView 回弹特效
- 简单的回弹效果
- 快速回弹滚动
- iOS回弹动画效果
- css滚动回弹样式
- 学习hg(mercurial)版本控制
- [leetcode] First Bad Version
- openfire+smack添加好友申请及好友对申请响应监听
- 黑马程序员--字符串的基本操作(String)
- 将优盘的FAT32格式改为NTFS
- 回弹算法
- Java性能优化(13):支持非可变性
- 汉堡菜单
- iOS 编码 URL Data
- sar 命令行的常用格式
- cocos2d文件打包步骤
- 从 QA 到 EP (四)
- freopen
- 最小的K个数