FloatingMenuButton.java 文件源码

java
阅读 36 收藏 0 点赞 0 评论 0

项目:floatingMenu 作者:
private Point calculateItemPositions(Integer startAngle, Integer endAngle) {
    final Point center = getActionViewCenter();
    RectF area = new RectF(center.x - radius, center.y - radius, center.x + radius, center.y + radius);
    Path orbit = new Path();
    orbit.addArc(area, startAngle, endAngle - startAngle);
    PathMeasure measure = new PathMeasure(orbit, false);
    // Prevent overlapping when it is a full circle
    int divisor;
    if (Math.abs(endAngle - startAngle) >= 360 || subMenuButtons.size() <= 1) {
        divisor = subMenuButtons.size();
    } else {
        divisor = subMenuButtons.size() - 1;
    }
    // Measure the path in order to find points that have the same distance between each other
    for (int i = 0; i < subMenuButtons.size(); i++) {
        SubButton currentSubButton = subMenuButtons.get(i);
        float[] coordinates = new float[]{0f, 0f};
        int factor = animationType == AnimationType.RADIAL ? 0 : i;
        measure.getPosTan(factor * measure.getLength() / divisor, coordinates, null);
        currentSubButton.setX((int) coordinates[0] - currentSubButton.getWidth() / 2);
        currentSubButton.setY((int) coordinates[1] - currentSubButton.getHeight() / 2);
    }
    return center;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号