鸿蒙Java开发模式5:鸿蒙Java自定义轮播图Banner的实现 原创 精华

发布于 2021-2-10 17:17
浏览
4收藏

1.鸿蒙目前Java UI中没有提供轮播图组件,通过对banner是一种基于鸿蒙pageslide的实现循环播放多个广告图片和手动滑动循环等功能的界面,功能已满足大部分要求。 原组件使用的第三方图片加载器来加载图片,本组件我们直接用list来包装图片,传入list来使用banner。实现效果如下:

鸿蒙Java开发模式5:鸿蒙Java自定义轮播图Banner的实现-开源基础软件社区鸿蒙Java开发模式5:鸿蒙Java自定义轮播图Banner的实现-开源基础软件社区

 

2.通过对android 图片轮播(banner)的模块开源项目 Banner 进行鸿蒙化的移植和开发的,实现了鸿蒙的第三方组件适配移植

模块和工程目录鸿蒙Java开发模式5:鸿蒙Java自定义轮播图Banner的实现-开源基础软件社区

 在settings.gradle文件中,添加模块,也可以在libs中引用将下载的jar包Banner .jar包,导入工程目录“entry->libs”下。鸿蒙Java开发模式5:鸿蒙Java自定义轮播图Banner的实现-开源基础软件社区

 

在moudle级别下的build.gradle文件中添加依赖,在dependences标签中增加对libs目录下jar包的引用。

鸿蒙Java开发模式5:鸿蒙Java自定义轮播图Banner的实现-开源基础软件社区

3.在布局文件中引用:

<?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:background_element="#87CEEB"
    ohos:orientation="vertical">
    <com.youth.banner.Banner
        ohos:id="$+id:banner"
        ohos:width="match_parent"
        ohos:height="400vp" />

</DirectionalLayout>

 

4.在Java中的实现

package com.example.javahm3.slice;

import com.example.javahm3.ResourceTable;
import com.youth.banner.Banner;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Component;
import ohos.agp.components.Image;
import ohos.agp.components.PositionLayout;
import ohos.agp.components.Text;
import ohos.agp.utils.Color;
import ohos.agp.colors.RgbColor;
import ohos.agp.components.element.ShapeElement;
import ohos.agp.components.ComponentContainer.LayoutConfig;
import ohos.global.resource.NotExistException;
import ohos.global.resource.Resource;
import ohos.global.resource.ResourceManager;
import ohos.global.resource.WrongTypeException;
import ohos.media.image.ImageSource;
import ohos.media.image.PixelMap;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainAbilitySlice extends AbilitySlice {

    Banner banner;
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);

        super.setUIContent(ResourceTable.Layout_ability_main);

        banner=(Banner)findComponentById(ResourceTable.Id_banner);

        banner.setDelayTime(4000);

        List<Integer> list=new ArrayList<>();


        list.add(ResourceTable.Media_m1);
        list.add(ResourceTable.Media_m2);
        list.add(ResourceTable.Media_m3);
        list.add(ResourceTable.Media_m4);
        list.add(ResourceTable.Media_m5);

        try {
            banner.setImages(list).start();
        } catch (NotExistException e) {
            e.printStackTrace();
        } catch (WrongTypeException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

Banner常使用的方法

setBannerStyle(int bannerStyle) 设置轮播样式(默认为CIRCLE_INDICATOR) 
isAutoPlay(boolean isAutoPlay) 设置是否自动轮播(默认自动) 
setViewPagerIsScroll(boolean isScroll) 设置是否允许手动滑动轮播图(默认true)
update(List<?> imageUrls,List titles) 更新图片和标题 
update(List<?> imageUrls) 更新图片 
startAutoPlay() 开始轮播 1.4开始,此方法只作用于banner加载完毕-->需要在start()后执行
stopAutoPlay() 结束轮播 1.4开始,此方法只作用于banner加载完毕-->需要在start()后执行
start() 开始进行banner渲染(必须放到最后执行)  
setBannerTitle(String[] titles) 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) 
setBannerTitleList(List titles) 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) 
setBannerTitles(List titles) 设置轮播要显示的标题和图片对应(如果不传默认不显示标题) 
setDelayTime(int time) 设置轮播图片间隔时间(单位毫秒,默认为2000) 
setImages(Object[]/List<?> images) 设置轮播图片(所有设置参数方法都放在此方法之前执行) 
setOnBannerClickListener(this) 设置点击事件,下标是从1开始 (废弃了)
setOnBannerListener(this) 设置点击事件,下标是从0开始 
setOnLoadImageListener(this) 设置图片加载事件,可以自定义图片加载方式 
setImageLoader(Object implements ImageLoader) 设置图片加载器 (等三方库)

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
6
收藏 4
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐