На основе открытого проекта компонентов: https://github.com/Hitomis/SpinMenu, разработан openharmony-совместимый компонент.
Компонент меню выбора в виде лотерейной рулетки. Впечатляет?
dependencies {
implementation 'io.openharmony.tpc.thirdlib:SpinMenu:1.0.1'
}
Импортируйте модуль smlibrary или просто скопируйте все Java-файлы из пакета com.hitomi.smlibrary
в ваш проект.
В файле разметки:
<com.hitomi.smlibrary.SpinMenu
xmlns:ohos="http://schemas.huawei.com/res/ohos"
xmlns:app="style"
ohos:id="$+id:spin_menu"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:background_element="#333a4a"
app:hint_text_color="#FFFFFF"
app:hint_text_size="14sp"
app:scale_ratio="0.36">
</com.hitomi.smlibrary.SpinMenu>
Если вы считаете фон слишком простым, вы можете вложить другие макеты внутри SpinMenu для создания своего собственного фона.
В Ability или AbilitySlice:
spinMenu = (SpinMenu) findComponentById(ResourceTable.Id_spin_menu);
// Установка заголовков страниц
List<String> 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
final List<Component> 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() {
// открытие меню
}
@Override
public void onMenuClosed() {
// закрытие меню
}
});
|:---:|:---:|:---:| |scale_ratio|float|поддерживает настройку размера масштабирования страницы; рекомендуется использовать значения в диапазоне от 0.3 до 0.5| |hint_text_color|цвет|поддерживает настройку цвета текста заголовков страниц| |hint_text_size|размерность|поддерживает настройку размера текста заголовков страниц|# Лicensия
MIT
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )