鸿蒙开发(16)---PageSliderIndicator组件

简介: 鸿蒙开发(16)---PageSliderIndicator组件

PageSliderIndicator组件


看到这个组件,哪怕学过其他开发,估计也会有点陌生。因为它与前面的PageSlider组件很像。没错,你可以把它想象成一个页面的切换。


同时,也可以把前端swiper组件当成页面的切换,只是其切换的是图或者文字,而PageSlider切换的是界面。PageSliderIndicator等价于前端的swiper组件。


今天,我们就来介绍该组件,并使用其实现一个图片浏览自动切换。


布局文件

首先,我们还是使用XML布局文件进行创建使用。示例代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">
    <StackLayout
        ohos:height="match_content"
        ohos:width="match_parent">
        <PageSlider
            ohos:id="$+id:ability_main_pageslider"
            ohos:height="match_content"
            ohos:width="match_parent"/>
        <PageSliderIndicator
            ohos:id="$+id:ability_main_pagesliderindicator"
            ohos:height="match_content"
            ohos:width="match_content"
            ohos:padding="8vp"
            ohos:layout_alignment="bottom"/>
    </StackLayout>
</DirectionalLayout>


我们都知道swiper组件的按钮选项一般与图片重叠,所以这里我们需要用到堆叠布局StackLayout,直接卸载外面会导致一个在另一个下边。


PageSlider图片页面

接着,我们需要通过PageSlider组件的适配器,完成轮换图片的界面。示例代码如下:

public class SwiperPageSliderProvider extends PageSliderProvider {
    private List<ImageSwiper> pixelMapList=new ArrayList<>();
    private AbilitySlice abilitySlice;
    public SwiperPageSliderProvider(List<ImageSwiper> pixelMapList,AbilitySlice abilitySlice) {
        this.pixelMapList=pixelMapList;
        this.abilitySlice=abilitySlice;
    }
    @Override
    public int getCount() {
        return this.pixelMapList == null ? 0 : this.pixelMapList.size();
    }
    @Override
    public Object createPageInContainer(ComponentContainer componentContainer, int i) {
        final ImageSwiper data = this.pixelMapList.get(i);
        Image image = new Image(this.abilitySlice);
        image.setPixelMap(data.resImage);
        image.setLayoutConfig(
                new StackLayout.LayoutConfig(
                        ComponentContainer.LayoutConfig.MATCH_PARENT,
                        ComponentContainer.LayoutConfig.MATCH_PARENT
                ));
        image.setScaleMode(Image.ScaleMode.STRETCH);
        componentContainer.addComponent(image);
        return image;
    }
    @Override
    public void destroyPageFromContainer(ComponentContainer componentContainer, int i, Object o) {
        componentContainer.removeComponent((Component) o);
    }
    @Override
    public boolean isPageMatchToObject(Component component, Object o) {
        return true;
    }
    public static class ImageSwiper{
        int resImage;
        public ImageSwiper(int imageRes) {
            resImage = imageRes;
        }
    }
}


与前面的PageSlider组件差不多,不在赘述。不过,前面我们是添加布局,这里我们是直接添加Image组件。


PageSliderIndicator与PageSlider关联

最后,我们需要将PageSliderIndicator与PageSlider组件进行关联,这样才能达到滑动图片以及点击下面的按钮,双互动的效果。


与TabList与PageSlider组件类似。不过,这里只需要通过PageSliderIndicator组件绑定即可,不需要双向绑定,它自己会完成。示例如下:

public class MainAbilitySlice extends AbilitySlice {
    private PageSlider pageSlider;
    private PageSliderIndicator pageSliderIndicator;
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        this.pageSlider=(PageSlider)findComponentById(ResourceTable.Id_ability_main_pageslider);
        this.pageSliderIndicator=(PageSliderIndicator)findComponentById(ResourceTable.Id_ability_main_pagesliderindicator);
        this.pageSlider.setProvider(new SwiperPageSliderProvider(getData(),this));
        this.pageSliderIndicator.setItemOffset(60);
        this.pageSliderIndicator.setPageSlider(pageSlider);
    }
    private List<SwiperPageSliderProvider.ImageSwiper> getData() {
        List<SwiperPageSliderProvider.ImageSwiper> imageSwiperList = new ArrayList<>();
        imageSwiperList.add(new SwiperPageSliderProvider.ImageSwiper(ResourceTable.Graphic_11));
        imageSwiperList.add(new SwiperPageSliderProvider.ImageSwiper(ResourceTable.Graphic_12));
        imageSwiperList.add(new SwiperPageSliderProvider.ImageSwiper(ResourceTable.Graphic_13));
        imageSwiperList.add(new SwiperPageSliderProvider.ImageSwiper(ResourceTable.Graphic_14));
        imageSwiperList.add(new SwiperPageSliderProvider.ImageSwiper(ResourceTable.Graphic_15));
        return imageSwiperList;
    }
}

运行之后,效果如首图所示。


需要注意的是,默认其不会轮回的切换。后面讲解线程知识的时候,会教大家用定时器实现轮播效果,还请不要太急。

相关文章
|
5月前
|
开发者 容器
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解Column和Row组件的使用以及线性布局的方法。
497 12
|
5月前
|
API 数据处理
鸿蒙应用开发从入门到实战(十三):ArkUI组件Slider&Progress
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解滑块Slider和进度条Progress组件的使用。
258 1
|
4月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
700 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
583 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
912 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
数据安全/隐私保护 开发者
鸿蒙应用开发从入门到实战(十一):ArkUI组件Text&TextInput
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解文本组件Text和TextInput的使用。
398 3
|
4月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
267 0
|
5月前
|
存储 缓存 5G
鸿蒙 HarmonyOS NEXT端云一体化开发-云存储篇
本文介绍用户登录后获取昵称、头像的方法,包括通过云端API和AppStorage两种方式,并实现上传头像至云存储及更新用户信息。同时解决图片缓存问题,添加上传进度提示,支持自动登录判断,提升用户体验。
252 1
|
5月前
|
存储 负载均衡 数据库
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
本文介绍基于华为AGC的端云一体化开发流程,涵盖项目创建、云函数开通、应用配置及DevEco集成。重点讲解云函数的编写、部署、调用与传参,并涉及环境变量设置、负载均衡、重试机制与熔断策略等高阶特性,助力开发者高效构建稳定云端服务。
597 1
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
|
5月前
|
API 数据处理
鸿蒙应用开发从入门到实战(十三):ArkUI组件Slider&Progress
ArkUI提供滑块Slider与进度条Progress组件,用于鸿蒙原生APP开发。Slider支持拖动调节音量、亮度等,可设步长、方向及提示气泡;Progress支持线性、环形等多种样式,可自定义颜色、宽度与刻度,实时显示任务进度。
370 2

热门文章

最新文章