allprojects {
repositories {
maven {
url 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
}
}
}
dependencies {
implementation('com.gitee.chinasoft_ohos:FlipViewPager.Draco:0.0.3-SNAPSHOT')
}
В случае проблем с запуском проекта на SDK6 и DevEco Studio 2.2 Beta1, рекомендуется удалить файлы .gradle, .idea, build, gradle и build.gradle и создать новый проект, соответствующий вашей версии. Затем скопируйте файлы из нового проекта в корневой каталог.
Ссылайтесь на XML-макет FlipViewPager:
<?xml version="1.0" encoding="utf-8"?>
<com.yalantis.flipviewpager.FlipViewPager
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:id="$+id:flip_list"
ohos:height="200vp"
ohos:width="match_parent"/>
Создайте свой Provider, наследуя от BaseFlipAdapter и реализуя абстрактные методы:
public class FriendProvider extends BaseItemProvider {
// ... other code
@Override
public Component getComponent(int position, Component component, ComponentContainer componentContainer) {
Component cpt = component;
if (cpt == null) {
cpt = LayoutScatter.getInstance(context).parse(ResourceTable.Layout_friend_item, null, false);
}
final int defaultPage = 2;
FlipViewPager flipViewPager = (FlipViewPager) cpt.findComponentById(ResourceTable.Id_flip_list);
// Устанавливаем позицию flipView
flipViewPager.setIndex(position);
// Добавляем слушателя для обработки касаний
flipViewPager.setLayoutTouchListener(this.layoutTouchListener);
// Включаем эффект тени при складывании
flipViewPager.setFoldShading(new SimpleFlipShading());
// Назначаем provider
flipViewPager.setProvider(new FlipViewPager.FlipProvider(flipItemArray.get(position)));
// Определяем начальную страницу
flipViewPager.setCurrentPage(defaultPage);
return cpt;
}
}
Реализуйте LayoutTouchListener для отслеживания событий касания:
public class MainAbilitySlice extends AbilitySlice implements LayoutTouchListener {
// other code
@Override
public void requestDisallowInterceptTouchEvent(boolean isEnable) {
// Управляем реакцией родительского макета на события касания
friendListContainer.setEnabled(isEnable);
}
@Override
public void clickedItem(int position, int page, int direction) {
// При нажатии на аватар друга показываем никнейм
if (page == num2) {
new ToastDialog(this)
.setOffset(0,offsetY)
.setText(Utils.friends.get(position * num2 + direction).getNickname())
.show();
}
}
}
Назначьте свой Provider для ListContainer:
public class MainAbilitySlice extends AbilitySlice implements LayoutTouchListener {
@Override
protected void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
friendListContainer = (ListContainer) findComponentById(ResourceTable.Id_friendList);
flipItemArray = new ArrayList<>();
for (int i = 0; i < Utils.friends.size(); i += num2) {
flipItemArray.add(FlipItemUtil.getFlipItems(i, i + 1, getContext()));
}
FriendProvider listProvider = new FriendProvider(flipItemArray, this);
// Регистрируем слушателя
listProvider.setLayoutTouchListener(this);
// Настраиваем поставщика контента
friendListContainer.setItemProvider(listProvider);
friendListContainer.setLongClickable(false);
}
}
CodeCheck — код протестирован, ошибок не обнаружено.
CloudTest — код протестирован, ошибок не обнаружено.
Проверка на вирусы — успешно пройдена.
Сравнение текущей версии с исходным компонентом — существенных различий нет.
0.0.3-SNAPSHOT. Распространено на условиях «КАК ЕСТЬ», БЕЗ ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующего разрешения и ограничения в соответствии с Лицензией.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )