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

OSCHINA-MIRROR/HarmonyOS-tpc-SlideAndDragListView

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

SlideAndDragListView

Это пользовательский компонент ListContainer, который позволяет скользить по меню влево и вправо, а также перетаскивать элементы вверх и вниз для изменения их позиции.

Обзор:

  • поддерживает скольжение влево и вправо для отображения меню;
  • поддерживает длительное нажатие или касание для перетаскивания элементов вверх и вниз;
  • опыт использования левого и правого скольжения по меню и эффекта перетаскивания вверх и вниз не так хорош, как у оригинального компонента.

Демонстрация:

Интеграция:

Способ 1: Создайте har-пакет с помощью library и добавьте его в папку libs. В файле entry gradle добавьте следующий код: implementation fileTree(dir: 'libs', include: ['.jar', '.har'])

Способ 2: Добавьте репозиторий mavenCentral() во все проекты. Затем добавьте зависимость: implementation 'io.openharmony.tpc.thirdlib:SlideAndDragListView:1.0.0'

Требования к запуску entry: Запустите DevEco studio и загрузите SDK. Измените версию classpath в файле build.gradle проекта на соответствующую версию (версия, используемая в вашем новом проекте IDE).

Пример:

    <com.yydcdut.sdlv.SlideAndDragListView
            ohos:id="$+id:lv_edit"
            ohos:width="match_parent"
            ohos:height="match_parent"
            ohos:left_padding="8vp"
            ohos:right_padding="8vp">
    </com.yydcdut.sdlv.SlideAndDragListView>
    /**
     * Левое и правое скольжение по меню
     */
    public class SlideDragListAbilitySlice extends AbilitySlice implements SlideAndDragListView.OnDragDropListener, SlideAndDragListView.OnSlideListener,
            SlideAndDragListView.OnMenuItemClickListener, SlideAndDragListView.OnItemDeleteListener,
            SlideAndDragListView.OnItemScrollBackListener {

        private SlideAndDragListView mListView;
        private Menu mMenu;
        private ListItemEnity mDraggedEntity;
        private ArrayList<ListItemEnity> mAppList = new ArrayList<>();
        private int menuWith = 150, menuHeight = 180, menuBtnHeight = 180, menuBtnWith = 150, marginTop = 25;


        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            super.setUIContent(ResourceTable.Layout_ability_drag_del);
            initData();
            initMenu();
            initUiAndListener();
        }

        public void initData() {
            ListItemEnity listItemEnity = new ListItemEnity();
            listItemEnity.setItemLabel("111111");
            listItemEnity.setItemImageId(ResourceTable.Media_icon);
            mAppList.add(listItemEnity);
            listItemEnity = new ListItemEnity();
            listItemEnity.setItemLabel("2222222");
            listItemEnity.setItemImageId(ResourceTable.Media_icon);
            mAppList.add(listItemEnity);
            listItemEnity = new ListItemEnity();
            listItemEnity.setItemLabel("3333333");
            listItemEnity.setItemImageId(ResourceTable.Media_icon);
            mAppList.add(listItemEnity);
            listItemEnity = new ListItemEnity();
            listItemEnity.setItemLabel("4444444");
            listItemEnity.setItemImageId(ResourceTable.Media_icon);
            mAppList.add(listItemEnity);
            listItemEnity = new ListItemEnity();
            listItemEnity.setItemLabel("5555555");
            listItemEnity.setItemImageId(ResourceTable.Media_icon);
            mAppList.add(listItemEnity);
            listItemEnity = new ListItemEnity();
            listItemEnity.setItemLabel("66666666");
            listItemEnity.setItemImageId(ResourceTable.Media_icon);
            mAppList.add(listItemEnity);
            listItemEnity = new ListItemEnity();
            listItemEnity.setItemLabel("7777777");
            listItemEnity.setItemImageId(ResourceTable.Media_icon);
            mAppList.add(listItemEnity);

        }

        public void initMenu() {
            mMenu = new Menu(true);
            ShapeElement shapeElement = new ShapeElement();
            shapeElement.setRgbColor(convertColor(0xffff4444));
            ShapeElement shapeElementGreen = new ShapeElement();
            shapeElementGreen.setRgbColor(convertColor(0xff669900));
            ShapeElement shapeElementBlue = new ShapeElement();
            shapeElementBlue.setRgbColor(convertColor(0xff0099cc));
            ShapeElement shapeElementYellow = new ShapeElement();
            shapeElementYellow.setRgbColor(convertColor(0xffff8800));
            mMenu.addItem(new MenuItem.Builder().setWidth(menuWith)
                    .setHeight(menuHeight)
                    .setMarginTop(marginTop)

*Примечание: в тексте запроса присутствуют фрагменты кода на языке Java, которые не были переведены.* ```
ListItemEnity item = (ListItemEnity) this.getItem(position);
cvh.txtName.setText(item.getItemLabel());
cvh.imgLogo.setPixelMap(item.getItemImageId());
cvh.btnClick.setText(position + "");
cvh.btnClick.setTag(position);
return convertView;

}

class CustomViewHolder {
    public Image imgLogo;
    public Text txtName;
    public Button btnClick;
}

private Component.ClickedListener mOnClickListener = new Component.ClickedListener() {

    @Override
    public void onClick(Component component) {
        Object o = component.getTag();
        if (o instanceof Integer) {
            new ToastDialog(getContext()).setText("button click-->" + (Integer) o).show();
        }
    }
};
private int mBeginPosition;

@Override
public void onDragViewStart(int beginPosition) {
    mBeginPosition = beginPosition;
    mDraggedEntity = mAppList.get(beginPosition);
}

@Override
public void onDragDropViewMoved(int fromPosition, int toPosition) {
}

@Override
public void onDragViewDown(int finalPosition) {
    ListItemEnity applicationInfo = mAppList.remove(mBeginPosition);
    mAppList.add(finalPosition, applicationInfo);
    mListView.setItemProvider(mAdapter);
    mListView.getItemProvider().notifyDataChanged();
}

@Override
public void onItemMoveFromTo(int fromPosition, int toPosition) {
    //TODO 长按拖动回调
    ListItemEnity applicationInfo = mAppList.remove(fromPosition);
    mAppList.add(toPosition, applicationInfo);
    mListView.getItemProvider().notifyDataChanged();
}

@Override
public void onSlideOpen(Component view, Component parentView, int position, int direction) {
}

@Override
public void onSlideClose(Component view, Component parentView, int position, int direction) {
}

@Override
public int onMenuItemClick(Component v, int itemPosition, int buttonPosition, int direction) {
    switch (direction) {
        case MenuItem.DIRECTION_LEFT:
            switch (buttonPosition) {
                case 0:
                    return Menu.ITEM_NOTHING;
                case 1:
                    return Menu.ITEM_SCROLL_BACK;
            }
            break;
        case MenuItem.DIRECTION_RIGHT:
            switch (buttonPosition) {
                case 0:
                    return Menu.ITEM_SCROLL_BACK;
                case 1:
                    return Menu.ITEM_DELETE_FROM_BOTTOM_TO_TOP;
            }
    }
    return Menu.ITEM_NOTHING;
}

@Override
public void onItemDeleteAnimationFinished(Component view, int position) {
    mAppList.remove(position);
    mAdapter.notifyDataChanged();
    mListView.getItemProvider().notifyDataSetItemRemoved(position);
    mListView.getItemProvider().notifyDataChanged();
}

public RgbColor convertColor(int color) {
    int colorInt = color;
    int red = (colorInt & 0xff0000) >> 16;
    int green = (colorInt & 0x00ff00) >> 8;
    int blue = (colorInt & 0x0000ff);
    return new RgbColor(red, green, blue);
}

@Override
public void onScrollBackAnimationFinished(Component view, int position) {

}
}
``` Распространяемое по Лицензии программное обеспечение распространяется на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, явных или подразумеваемых. См. текст Лицензии для ознакомления с конкретными условиями предоставления разрешений и ограничений в рамках Лицензии.

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

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

Введение

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

Обновления

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

Участники

все

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

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