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;
}
FloatingMenuButton.java 文件源码
java
阅读 36
收藏 0
点赞 0
评论 0
项目:floatingMenu
作者:
评论列表
文章目录