ArcMenu弧形菜单Kotlin实现

弧形展开的 Android 菜单交互,视觉冲击力还蛮强的。ArcMenu就是这么一个挺有意思的控件,用 Kotlin 写起来也不复杂,适合想给 UI 加点料的你。

ArcMenu 的核心是中间一个主按钮,点一下就能把几个子菜单沿着一个弧线弹出来,动态效果挺顺的,响应也快。整个结构靠一个中心控件+多个子控件拼出来。

布局部分你可以直接在res/layout里搞一个ArcMenu的容器,里面放中心按钮和菜单项,推荐用ImageView配上ObjectAnimator,写起来比较清爽。

动画怎么整?其实思路就一个:给每个菜单项算出角度,用translationXtranslationY控制它走哪,配上ValueAnimator做展开/收起的效果,逻辑不复杂。

交互方面,点击事件记得加好,可以直接用setOnClickListener,也能配个GestureDetector,用户体验上会更丝滑。收起时别忘了触摸穿透的问题,防误触还是挺重要的。

如果你想让菜单更好看点,菜单项可以自定义,加图标、加文字都没问题,写个自定义 View 就能搞定了。

强烈建议把ArcMenu封成组件,弄个自定义 View 或者 Fragment,想复用就直接引,项目里用起来省心多了。源码里也有不少写好的类和动画资源,可以直接借鉴。

想看看类似布局实现,可以翻一下拖动布局这篇,也挺有参考价值。

如果你想做一个带动效、又不占空间的菜单,ArcMenu会是一个比较实用的选择。

zip
Android-ArcMenu弧形菜单kotlin实现.zip 预估大小:47个文件
folder
ArcMenu-master 文件夹
file
gradlew 5KB
file
build.gradle.kts 476B
file
arcmenu.gif 712KB
folder
gradle 文件夹
folder
wrapper 文件夹
file
gradle-wrapper.properties 230B
file
gradle-wrapper.jar 53KB
file
README.md 366B
file
gradlew.bat 2KB
file
gradle.properties 726B
file
.gitignore 513B
folder
app 文件夹
file
build.gradle.kts 1KB
folder
src 文件夹
folder
androidTest 文件夹
folder
java 文件夹
folder
com 文件夹
folder
justdoit 文件夹
folder
arcmenu 文件夹
file
ExampleInstrumentedTest.java 724B
folder
test 文件夹
folder
java 文件夹
folder
com 文件夹
folder
justdoit 文件夹
folder
arcmenu 文件夹
file
ExampleUnitTest.java 381B
folder
main 文件夹
file
AndroidManifest.xml 718B
folder
res 文件夹
folder
mipmap-hdpi 文件夹
file
ic_launcher.png 3KB
file
ic_launcher_round.png 5KB
folder
mipmap-xxxhdpi 文件夹
file
ic_launcher.png 9KB
file
ic_launcher_round.png 15KB
folder
mipmap-xhdpi 文件夹
file
ic_launcher.png 4KB
file
start_menu_icon.png 194B
file
start_menu_icon_bg.png 677B
file
ic_launcher_round.png 7KB
file
sheet_main_activity_start_live_icon.png 2KB
folder
mipmap-anydpi-v26 文件夹
file
ic_launcher.xml 270B
file
ic_launcher_round.xml 270B
folder
mipmap-mdpi 文件夹
file
ic_launcher.png 2KB
file
ic_launcher_round.png 3KB
folder
drawable 文件夹
file
ic_launcher_background.xml 5KB
folder
layout 文件夹
file
arc_menu.xml 1KB
file
activity_main.xml 618B
folder
drawable-v24 文件夹
file
ic_launcher_foreground.xml 2KB
folder
values 文件夹
file
colors.xml 208B
file
attrs.xml 568B
file
strings.xml 70B
file
styles.xml 383B
folder
mipmap-xxhdpi 文件夹
file
ic_launcher.png 6KB
file
start_menu_icon.png 239B
file
start_menu_icon_bg.png 923B
file
ic_launcher_round.png 10KB
file
sheet_main_activity_start_live_icon.png 2KB
folder
java 文件夹
folder
com 文件夹
folder
justdoit 文件夹
folder
arcmenu 文件夹
file
ArcMenu.kt 3KB
file
RotateAndTranslateAnimation.java 4KB
file
MainActivity.kt 2KB
file
ArcLayout.kt 9KB
file
CommonObserver.kt 297B
file
.gitignore 454B
file
proguard-rules.pro 751B
file
settings.gradle.kts 61B
...
zip 文件大小:746.17KB