自己理解为地图模式

个人

设置容器的半径,设置容器的默认大小,设置开始的角度,设置菜单的个数,记录上一次x,y的位置,在改方法中public MapModelLayout(Context context, AttributeSet attrs),计算具手机屏幕的顶部距离,计算容器的半径,

在onMeasure方法中根据设置的半径在乘以1 / 1f;计算出每个View的大小,并设置ViewGroup的模式MeasureSpec.EXACTLY

分别设置ViewGroup的每个View的大小并判断是否显示和隐藏如果是隐藏就持续执行

并设置并计算item的尺寸;以及和设置好的模式,去对item进行测量makeMeasureSpec = MeasureSpec.makeMeasureSpec(childSize, childMode);

并分别设置View的大小

在onLayout里面得到半径并且 angleDelayLeft = 360 / (showNum * 2);得到旋转的弧度

利用Math函数分别算出正玄和余弦根据默认的半径和开始的角度,肯据余弦函数算出左边的距离在根据正玄算出View与View之间的距离在根据dispatchTouchEvent判断根据XY坐标判断是顺时针还是逆时针,然后在onLayout里面判断先移除数据

if (centTop > centerLine - 50 && centTop < centerLine) {// 上边conTao为正玄函数和默认尺寸的大小和centerLine有默认的半径组成,并根据dispatchTouchEvent计算左右的距离

if (centTop < centerLine + 50 && centTop > centerLine) {// 同理得出判断下isRight为成员变量

并根据childView.findViewById(R.id.layout_id);设置v.setScaleX((float) (1 + Math.pow(
     Math.cos(Math.toRadians(startAngle)), num)));
   v.setScaleY((float) (1 + Math.pow(
     Math.cos(Math.toRadians(startAngle)), num)));

mum 为设置的5也是默认页面显示的个数


猜你喜欢

转载自blog.csdn.net/qq_22874899/article/details/80216568
今日推荐