1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chinasoft4_ohos-LiveGiftLayout

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

LiveGiftLayout

项目介绍

  • Проект: LiveGiftLayout.
  • Серия: openharmony, сторонние компоненты для адаптации.
  • Функция: эффект непрерывного клика на подарках в прямом эфире с панелью подарков. Из-за проблемы с анимацией HarmonyOS иногда возникает проблема с зависанием анимации (иногда при отправке подарка во время прямого эфира анимация зависает). Из-за невозможности получить отражение «mCurTextColor» эффект текстовой обводки не реализован (при отправке подарка в анимации прямого эфира стиль количества подарков не соответствует Android).
  • Состояние переноса проекта: основная функция реализована.
  • Различия в вызовах: нет.
  • Версия разработки: SDK6, DevEco Studio2.2 Beta1.
  • Базовая версия: Release v1.3.

Эффект демонстрации

image text

Установка

  1. В файле build.gradle в корневом каталоге проекта:
 allprojects {
    repositories {
        maven {
            url 'https://s01.oss.sonatype.org/content/repositories/releases/'
        }
    }
 }
  1. В файле build.gradle модуля entry:
 dependencies {
    
    implementation('com.gitee.chinasoft_ohos:LiveGiftLayout:1.0.0')
    ......  
 }

В SDK6 и DevEco Studio 2.2 Beta1 проект можно запустить напрямую. Если запуск невозможен, удалите файлы проекта .gradle, .idea, build, gradle, build.gradle и создайте новый проект с вашей версией. Скопируйте соответствующие файлы из нового проекта в корневой каталог.

Использование

  1. Добавьте место для отображения подарков и панели подарков в XML-файл, который нужно отобразить. Например, в интерфейсе gift1:
<?xml version="1.0" encoding="utf-8"?>
<DependentLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent">

    <Image
        ohos:id="$+id:bg"
        ohos:height="match_parent"
        ohos:width="match_parent"
        ohos:image_src="$media:ic_bg"
        ohos:scale_mode="clip_center"/>

    <ListContainer
        ohos:id="$+id:recyclerView"
        ohos:height="300vp"
        ohos:width="180vp"
        ohos:align_parent_right="true"/>

    <DirectionalLayout
        ohos:id="$+id:ll_gift_parent"
        ohos:height="match_parent"
        ohos:width="match_parent"
        ohos:align_parent_bottom="true"
        ohos:alignment="bottom"
        ohos:top_margin="130vp"
        ohos:bottom_margin="280vp"
        ohos:orientation="vertical">
    </DirectionalLayout>

    <Button
        ohos:id="$+id:action"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:background_element="$graphic:background_ability_main"
        ohos:bottom_padding="8vp"
        ohos:horizontal_center="true"
        ohos:left_padding="10vp"
        ohos:right_padding="10vp"
        ohos:text="礼物面板显示/隐藏"
        ohos:text_size="15fp"
        ohos:top_margin="50vp"
        ohos:top_padding="8vp"/>

    <ScrollView
        ohos:height="200vp"
        ohos:width="match_parent"
        ohos:below="$+id:action"
        ohos:top_margin="20vp">

        <DirectionalLayout
            ohos:height="match_parent"
            ohos:width="match_parent"
            ohos:orientation="vertical">

            <Checkbox
                ohos:id="$+id:rb_currentStart"
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:text="是否使用当前礼物数开始显示"
                ohos:text_color_off="$color:white"
                ohos:text_color_on="$color:white"
                ohos:text_size="22fp"/>

            <Checkbox
                ohos:id="$+id:rb_displayMode"
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:marked="true"
                ohos:text="是否由下往上显示"
                ohos:text_color_off="$color:white"
                ohos:text_color_on="$color:white"
                ohos:text_size="22fp"
                ohos:top_margin="5vp"/>

            <Checkbox
                ohos:id="$+id:rb_hideMode"
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:text="是否开启隐藏动画"
                ohos:text_color_off="$color:white"
                ohos:text_color_on="$color:white"
                ohos:text_size="22fp"
                ohos:top_margin="5vp"/>
        </DirectionalLayout>

    </ScrollView>

    <DependentLayout
        ohos:height="match_content"
        ohos:width="match_parent"
        ohos:align_parent_bottom="true"
        ohos:bottom_margin="10vp">

        <Button
            ohos:id="$+id:btn_clear_gift"
            ohos:height="match_content"
            ohos:width="match_content"
            ohos:background_element="$graphic:background_ability_main"
            ohos:bottom_padding="8vp"
            ohos:left_padding="18vp"
            ohos:margin="3vp" **ohos:right_padding="18vp"** — ohos:right_padding = "18vp".

**ohos:text="清除礼物"** — охos:текст = «очистить подарок».

**ohos:text_size="14vp"** — ohos:text_size = "14vp".

**ohos:top_padding="8vp"/**/ — ohos:top_padding = "8vp". 

*И так далее.*

2. В странице можно найти элемент управления и инициализировать модуль подарков.  

a. Панель подарков.

Код:

Здесь, если вы хотите использовать локальное изображение подарка, используйте напрямую:  
`giftPanelControl.init(null);` // здесь, если null, загрузите локальное изображение подарка.

GiftPanelControl giftPanelControl = new GiftPanelControl(this, mViewpager, mRecyclerView, mDotsLayout); giftPanelControl.init(null);//здесь, если null, загрузить локальное изображение подарка giftPanelControl.setGiftListener(new GiftPanelControl.GiftListener() { @Override public void getGiftInfo(String giftPic, String giftName, String giftPrice) { mGifturl = giftPic; mGiftName = giftName; } });

Здесь в параметре `giftPic` я передаю имя изображения из файла ресурсов, вы также можете передать идентификатор изображения.  

b. Показать подарок.

Метод `setGiftLayout(giftParent, 3)` устанавливает количество дорожек для подарков. Метод `setCustormAnim(new CustormAnim())` позволяет расширить анимацию подарков без изменения исходного кода.

final DirectionalLayout giftParent = (DirectionalLayout) findComponentById(ResourceTable.Id_ll_gift_parent); giftControl = new GiftControl(this); giftControl.setGiftLayout(giftParent, 3).setHideMode(false) .setCustormAnim(new CustomAnim());//здесь можно настроить анимацию подарка

c. Отображение панели количества подарков.

tvGiftNum.setClickedListener(v -> pop.setVisibility(Component.VISIBLE));

d. Операция отправки подарка на панели подарков.

Если вы хотите начать серию нажатий с определённого количества подарков, вы можете установить `setCurrentStart(true)` и `setHitCombo(giftnum)` перед созданием `GiftModel`. Таким образом, это может быть реализовано.  
Совет: здесь метод `setCurrentStart()` должен быть установлен в `true`, чтобы метод `setHitCombo()` вступил в силу. ```
.setCurrentStart(currentStart);
if (currentStart) {
    giftModel.setHitCombo(giftnum);
}
giftControl.loadGift(giftModel);
adapter.add(mGiftName);
System.out.println("onClick: " + giftControl.getShowingGiftLayoutCount());
}
}
});

e. Простая операция привела к отображению разных панелей на горизонтальном и вертикальном экранах.

findComponentById(ResourceTable.Id_action).setClickedListener(v -> {
    if (giftLayout.getVisibility() == Component.VISIBLE) {
        giftLayout.setVisibility(Component.HIDE);
    } else {
        giftLayout.setVisibility(Component.VISIBLE);
    }
});

f. Подобно переключению между трансляциями, можно повторно отправить подарок (переключение реализовано функционально, но не визуально).

findComponentById(ResourceTable.Id_btn_clear_gift).setClickedListener(v -> {
    if (giftControl != null) {
        giftControl.cleanAll();
    }
});
findComponentById(ResourceTable.Id_btn_reset_gift).setClickedListener(new Component.ClickedListener() {
    @Override
    public void onClick(Component v) {
        giftControl.reSetGiftLayout(giftParent, 3)
                .setHideMode(false);
    }
});
#### 测试信息
CodeCheck код протестирован без исключений.
CloudTest код протестирован без исключений.
Вирусная безопасность проверена.
Текущая версия demo функции в основном идентична исходному компоненту.
#### Версия
1.0.0
#### Информация о лицензии и авторских правах
Apache License 2.0

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chinasoft4_ohos-LiveGiftLayout.git
git@api.gitlife.ru:oschina-mirror/chinasoft4_ohos-LiveGiftLayout.git
oschina-mirror
chinasoft4_ohos-LiveGiftLayout
chinasoft4_ohos-LiveGiftLayout
master