簡單:滑動頁面
官方:PageSlider是用于頁面之間切換的組件,它通過響應滑動事件完成頁面間的切換。
創建適配器 繼承 PageSliderProvider.java
TestPagerProvider.java
package com.testruiwang.myapplication3.slice;
import ohos.agp.colors.RgbColor;
import ohos.agp.components.*;
import ohos.agp.components.element.ShapeElement;
import ohos.agp.utils.Color;
import ohos.agp.utils.TextAlignment;
import java.util.List;public class TestPagerProvider extends PageSliderProvider {// 數據源,每個頁面對應list中的一項private List<DataItem> list;public TestPagerProvider(List<DataItem> list) {this.list = list;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object createPageInContainer(ComponentContainer componentContainer, int i) {final DataItem data = list.get(i);Text label = new Text(null);label.setTextAlignment(TextAlignment.CENTER);label.setLayoutConfig(new StackLayout.LayoutConfig(ComponentContainer.LayoutConfig.MATCH_PARENT,ComponentContainer.LayoutConfig.MATCH_PARENT));label.setText(data.mText);label.setTextColor(Color.BLACK);label.setTextSize(50);ShapeElement element = new ShapeElement();element.setRgbColor(RgbColor.fromArgbInt(Color.getIntColor("#AFEEEE")));label.setBackground(element);componentContainer.addComponent(label);return label;}@Overridepublic void destroyPageFromContainer(ComponentContainer componentContainer, int i, Object o) {componentContainer.removeComponent((Component) o);}@Overridepublic boolean isPageMatchToObject(Component component, Object o) {return true;}//數據實體類public static class DataItem{String mText;public DataItem(String txt) {mText = txt;}}
}
MainAbilitySlice.java
@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);initPageSlider();}private void initPageSlider() {PageSlider pageSlider = (PageSlider) findComponentById(ResourceTable.Id_page_slider);pageSlider.setProvider(new TestPagerProvider(getData()));}private ArrayList<TestPagerProvider.DataItem> getData() {ArrayList<TestPagerProvider.DataItem> dataItems = new ArrayList<>();dataItems.add(new TestPagerProvider.DataItem("Page A"));dataItems.add(new TestPagerProvider.DataItem("Page B"));dataItems.add(new TestPagerProvider.DataItem("Page C"));dataItems.add(new TestPagerProvider.DataItem("Page D"));return dataItems;}
ability_main.xml
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayoutxmlns:ohos="http://schemas.huawei.com/res/ohos"ohos:height="match_parent"ohos:width="match_parent"ohos:alignment="center"ohos:orientation="vertical"><PageSliderohos:id="$+id:page_slider"ohos:height="300vp"ohos:width="300vp"ohos:layout_alignment="horizontal_center"/></DirectionalLayout>
(1)響應頁面切換事件
pageSlider.addPageChangedListener(new PageSlider.PageChangedListener() {@Overridepublic void onPageSliding(int itemPos, float itemPosOffset, int itemPosPixles) { }@Overridepublic void onPageSlideStateChanged(int state) { }@Overridepublic void onPageChosen(int itemPos) { }});
(2)設置橫向布局
<PageSlider...ohos:orientation="vertical"/>
pageSlider.setOrientation(Component.VERTICAL);
(3)設置保留當前頁面兩側的頁面數
<PageSlider...ohos:page_cache_size="2"/>
pageSlider.setPageCacheSize(2);
(4)設置當前展示頁面
pageSlider.setCurrentPage(2);
(5)平滑滾動到指定頁面
pageSlider.setCurrentPage(2,true);
(6)設置是否啟用頁面滑動
pageSlider.setSlidingPossible(false);
(7)設置回彈效果
pageSlider.setReboundEffect(true);
(8)設置頁面切換時間,單位:ms
pageSlider.setPageSwitchTime(2000);
PageSlider 更多
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态