_StayStrong 2024-02-22 16:30 采纳率: 62.5%
浏览 7
已结题

Android中通过约束关系实现菜单展开时的问题

问题描述
在屏幕上有一个可自由拖动的mainButton,当点击mainButton时会展开菜单,菜单展开遵循以下规则:当mainButton在屏幕上的左侧时,菜单展开在mainButton的右侧,反之同理。如图:

img

我的思路
在判断mainButton在屏幕上的位置后,通过改变ConstraintSet约束关系实现。
但在实现时,由于改变了约束关系mainButton的位置会显出抖动或者移位,理想的状态是,mainButton的位置不变,菜单根据mainButton的位置进行展开。

具体代码片

    /**
     * 更新布局约束
     */
    public void updateConset() {
        int radius = 200;
        int angle = calculateAngularInterval();
        if (mainFAB.isLeft()) {
            setConset(ConstraintSet.START,radius,angle);
        }else{
            setConset(ConstraintSet.END,radius,angle * -1);

        }
    }

   /**
     * 设置布局约束
     */
    private void setConset(int startOrEnd,int radius,int angle) {
        ConstraintSet constraintSet = new ConstraintSet();
        constraintSet.clone(this);

        //清除首尾约束
        constraintSet.clear(mainFAB.getId(),ConstraintSet.START);
        constraintSet.clear(mainFAB.getId(),ConstraintSet.END);
        //重新设置首尾约束
        constraintSet.connect(mainFAB.getId(),startOrEnd,ConstraintSet.PARENT_ID,startOrEnd,0);
        //设置顶部和顶部的约束,保证mainFAB垂直居中
        constraintSet.connect(mainFAB.getId(),ConstraintSet.TOP,ConstraintSet.PARENT_ID,ConstraintSet.TOP,0);
        constraintSet.connect(mainFAB.getId(),ConstraintSet.BOTTOM,ConstraintSet.PARENT_ID,ConstraintSet.BOTTOM,0);
        for (int i = 1; i <= subButtonList.size(); i++) {
            //子按钮按照半圆形等间隔排列
            constraintSet.constrainCircle(subButtonList.get(i-1).getId(), mainFAB.getId(),radius,angle * i);
        }

        constraintSet.applyTo(this);
    }

  • 写回答

1条回答 默认 最新

  • GISer Liu 2024-02-22 17:13
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    针对您的问题,苹果电脑在删除缓存时误删了某些配置,导致只有微信能上网,但微信无法接收表情包的情况,这里提供一个详细的解决方案:

    解决思路

    1. 网络连接问题诊断:首先确认问题是否仅限于网络连接,即其他应用是否完全无法联网,或者是部分服务受限。
    2. 系统权限与配置恢复:考虑到删除了Application Support文件夹下的内容,可能影响了某些应用的正常使用,包括网络服务。
    3. 微信表情包问题分析:微信无法接收表情包可能是由于应用数据或缓存受损。

    解决方案

    恢复网络连接

    1. 检查网络设置:前往系统偏好设置 > 网络,检查是否有任何异常配置,如代理设置等。
    2. 重置网络设置:考虑到可能误删了网络相关的配置文件,可以尝试重置网络设置。可以通过在终端(Terminal)执行以下命令来重置网络配置:
      sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
      sudo rm /Library/Preferences/SystemConfiguration/preferences.plist
      
      重置后需要重启电脑。

    恢复微信功能

    1. 重装微信:由于Application Support下的文件可能包含微信的一些配置文件,建议完全卸载微信后重新安装。
    2. 清理缓存:在重新安装微信前,可以使用清理工具(如CleanMyMac或手动清理)清除微信的残留缓存文件。

    数据备份与恢复

    • Time Machine备份:如果之前有使用Time Machine进行备份,可以尝试从备份中恢复误删除的文件。
    • 无备份情况:如果没有备份,那么重置网络设置和重新安装受影响的应用是最直接的解决办法。

    注意事项

    • 在执行系统级别的操作如删除系统文件或重置网络设置时,建议先进行数据备份,以防不测。
    • 重置网络设置后,之前配置的网络(如VPN等)可能需要重新设置。

    希望这个解决方案能帮助您解决问题。如果问题仍然存在,建议联系苹果官方技术支持获取更专业的帮助。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月4日
  • 修改了问题 2月22日
  • 创建了问题 2月22日

悬赏问题

  • ¥20 python爬虫遇到空文本取不出来
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入