zoukankan      html  css  js  c++  java
  • 一个发散动画的菜单控件(主要记录控件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 {
                //是奇数
            }
        }
  • 相关阅读:
    基于角色的权限设计(一)
    js图片懒加载插件封装
    项目中必须知道有关css和html的常识
    设为主页代码及添加到收藏夹代码大全
    JS弹出层、弹窗效果+拖曳功能
    算数验证码
    js基础知识
    基于角色的权限设计(二)
    sqlserver数据类型char和nchar,varchar和nvarchar,text和ntext的用法以及区别?
    经典页面布局,任何分辨率下,全屏显示
  • 原文地址:https://www.cnblogs.com/yegong0214/p/9364363.html
Copyright © 2011-2022 走看看