项目需求,自己实现弧形卫星菜单,写的不足之处,希望体谅......
具体实现不好描述,可参考demo,查看源码
效果图
state.gif
分析
1.点击按钮,从按钮处扩散出弧形的几个子View
2.点击按钮是,获取按钮的x、y坐标
3.在一个布局中循环添加子View,同时根据按钮显示的位置决定子View圆形扩散的x,y值
4.添加子View完成之后,每一项子View都执行移动动画
核心代码分析
1.分析
22AE248A9B4BC4F03E36338D8F0704F1.jpg
2.核心代码
![QF5[A2~JPK7Y]8@NWGOD20.jpg
使用
1.在项目gradle中添加
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2.添加依赖
{
'com.github.JadeKkang:satellitedemo:v1.0'
}
3.xml中使用
左上<
<com.example.satellite.SatelliteMenu
android:id="@+id/left_top"
app:orientation="left_top"
app:radius="100"
app:itemSize="35dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
左下
<com.example.satellite.SatelliteMenu
app:orientation="left_bottom"
app:radius="50"
app:itemSize="30dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
右上
<com.example.satellite.SatelliteMenu
android:id="@+id/right_top"
app:orientation="right_top"
app:radius="100"
app:isText="true"
app:textColor="#1546e9"
app:textSize="10sp"
app:itemSize="35dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
右下
<com.example.satellite.SatelliteMenu
android:id="@+id/right_bottom"
app:orientation="right_bottom"
app:radius="100"
app:itemSize="30dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
自定义属性
属性 | 值 | 描述 |
---|---|---|
orientation | left_bottom、left_top、right_bottom、right_top | 控制显示的位置 |
bitmap | @mipmap/heart | 显示的图片 |
radius | 50 | 扩散圆的基准半径 |
isText | true | 控制图片下面是否显示文字 |
textSize | 10sp | 图片下面文字的大小 |
itemSize | 40dp | 控制扩散view的大小 |
textColor | #1546e9 | 图片下面文字的颜色 |
预留方法
1.setImg(int[] img)设置子View的图片资源
2.setTexts(String[] text)当文字显示时,所显示的文字
3.setClickItem(ClickItem clickItem)点击子View监听回调
注意
1.设置子View数组的大小,就是点击扩散出去的Item数量,建议不要太多,要适当的改变radius属性
2.当有文字显示时,一定要设置显示文字数组,一定要和设置子View的数组大小一样
3.设置文字字体大小,不宜过大,文字长度不宜过长
3.如不能满足要求,可自行扩展