# SpinMenu **Repository Path**: HarmonyOS-tpc/SpinMenu ## Basic Information - **Project Name**: SpinMenu - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-15 - **Last Updated**: 2024-11-22 ## Categories & Tags **Categories**: harmonyos-menu **Tags**: None ## README # SpinMenu 基于开源组件项目:https://github.com/Hitomis/SpinMenu,开发的openharmony开源组件 轮盘样式的 Component 菜单选择控件。有没有很炫? # Preview # Usage ```groovy dependencies{ implementation 'io.openharmony.tpc.thirdlib:SpinMenu:1.0.1' } ``` 导入 smlibrary module, 或者直接拷贝 com.hitomi.smlibrary 包下所有 java 文件到您的项目中 布局文件中: 如果您觉得背景太空洞,可以在 SpinMenu 中嵌套其它布局,来绘制您自己的背景 Ability 或 AbilitySlice 中: spinMenu = (SpinMenu) findComponentById(ResourceTable.Id_spin_menu); // 设置页面标题 List hintStrList = new ArrayList<>(); hintStrList.add("热门信息"); hintStrList.add("实时新闻"); hintStrList.add("我的论坛"); hintStrList.add("我的信息"); hintStrList.add("走走看看"); hintStrList.add("阅读空间"); hintStrList.add("听听唱唱"); hintStrList.add("系统设置"); spinMenu.setHintTextStrList(hintStrList); spinMenu.setHintTextColor(0xffffffff); spinMenu.setHintTextSize(dp2px(14)); // 设置启动手势开启菜单 spinMenu.setEnableGesture(true); // 设置页面适配器,由于openharmony没有合适适配的Fragment,这里直接适配了Component,Layout也可以直接使用可操作性更大 final List components = new ArrayList<>(); for (int i = 0; i < imgIds.length ; i++) { Image image = new Image(this); ComponentContainer.LayoutConfig layoutConfig = image.getLayoutConfig(); layoutConfig.height = ComponentContainer.LayoutConfig.MATCH_PARENT; layoutConfig.width = ComponentContainer.LayoutConfig.MATCH_PARENT; image.setLayoutConfig(layoutConfig); image.setPixelMap(imgIds[i]); image.setScaleMode(Image.ScaleMode.STRETCH); components.add(image); } PageSliderProvider pageSliderProvider = new PageSliderProvider() { @Override public int getCount() { return components.size(); } @Override public Object createPageInContainer(ComponentContainer componentContainer, int i) { return components.get(i); } @Override public void destroyPageFromContainer(ComponentContainer componentContainer, int i, Object o) { } @Override public boolean isPageMatchToObject(Component component, Object o) { return false; } }; spinMenu.setFragmentAdapter(pageSliderProvider); // 设置菜单状态改变时的监听器 spinMenu.setOnSpinMenuStateChangeListener(new OnSpinMenuStateChangeListener() { @Override public void onMenuOpened() { // menu open } @Override public void onMenuClosed() { // menu open } }); # AttrSet |name|format|description| |:---:|:---:|:---:| | scale_ratio | float | 支持页面缩放大小自定义,建议取值在0.3到0.5之间 | hint_text_color | color | 支持页面标题文字颜色自定义 | hint_text_size | dimension | 支持页面标题文字大小自定义 #License MIT