欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

防小米手机MIUI8悬浮球菜单插件代码下载

程序员文章站 2022-02-07 12:25:08
...

本Demo是一款仿小米MIUI8的桌面悬浮球功能、可以在MainActivity中调整悬浮球菜单的动画速度、但整体的动画效果还是没有MIUI8效果流畅、可以做为研究用、如果要使用到项目里面、还需要完善开发、下面是效果图

防小米手机MIUI8悬浮球菜单插件代码下载


打开和关闭菜单操作

// 打开菜单操作
private void open() {
    // 判断菜单位置左边和右边打开方向不一样
    if (tvx > 300) {
        yidong(tv1, tvx, tvy - ZHENG);
        yidong(tv2, tvx - XIE, tvy - XIE);
        yidong(tv3, tvx - ZHENG, tvy);
        yidong(tv4, tvx - XIE, tvy   XIE);
        yidong(tv5, tvx, tvy   ZHENG);
    } else {
        yidong(tv1, tvx, tvy - ZHENG);
        yidong(tv2, tvx   XIE, tvy - XIE);
        yidong(tv3, tvx   ZHENG, tvy);
        yidong(tv4, tvx   XIE, tvy   XIE);
        yidong(tv5, tvx, tvy   ZHENG);
    }
}

// 关闭菜单操作
private void closed() {
    yidong(tv1, tvx, tvy);
    yidong(tv2, tvx, tvy);
    yidong(tv3, tvx, tvy);
    yidong(tv4, tvx, tvy);
    yidong(tv5, tvx, tvy);
}


屏幕操作监听

@Override
public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        break;
    case MotionEvent.ACTION_MOVE:
        tFlag = true;
        x = event.getRawX();
        y = event.getRawY() - 55;
        yidong(v, (int) x, (int) y);
        yidong(tv1, (int) x, (int) y);
        yidong(tv2, (int) x, (int) y);
        yidong(tv3, (int) x, (int) y);
        yidong(tv4, (int) x, (int) y);
        yidong(tv5, (int) x, (int) y);
        break;
    case MotionEvent.ACTION_UP:
        // tFlag避免长按事件未执行时(x,y值为0)移动到0位置
        if (tFlag) {
            tFlag = false;
            // 松手时判断当前位置
            // 保证菜单在左边或右边
            // 保证打开时不会出现在屏幕外
            int[] location = new int[2];
            tv.getLocationOnScreen(location);
            tvx = location[0];
            tvy = location[1];
            // 上方位置限制
            if (y < 200) {
                y = 200;
            }
            // 下方位置限制
            if (tvy > winy - 200 - tv.getHeight()) {
                y = winy - tv.getHeight() - 200 - statusHeight;
            }
            // 如果x位置大于屏幕宽的一半最终位置在屏幕右边
            if (x > (winx / 2   tv.getWidth() / 2)) {
                x = winx - (tv.getWidth());
            } else {
                x = 0;
            }
            // 确定最终位置
            yidong(v, (int) x, (int) y);
            yidong(tv1, (int) x, (int) y);
            yidong(tv2, (int) x, (int) y);
            yidong(tv3, (int) x, (int) y);
            yidong(tv4, (int) x, (int) y);
            yidong(tv5, (int) x, (int) y);
        }
        break;

    }
    return false;
}


小米手机悬浮球源代码下载链接: 小米悬浮球下载 密码: 6xq2