鸿蒙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
回复
举报
7条回复
按时间正序
/
按时间倒序
Whyalone
Whyalone

唉?鸿蒙社区惊现煤油??

回复
2021-2-13 22:31:52
六合李欣
六合李欣 回复了 Whyalone
唉?鸿蒙社区惊现煤油??

煤油???

回复
2021-2-13 22:57:51
Whyalone
Whyalone 回复了 六合李欣
煤油???

啊?不是魅族粉丝么?

回复
2021-2-14 10:48:03
六合李欣
六合李欣

新年好,不是煤油,哈哈

回复
2021-2-14 10:49:07
霹雳冬瓜
霹雳冬瓜

大佬 banner模块代码有嘛? banner.jar找到没法使用,maven上的banner依赖也没法引入到项目中。。。。。

回复
2021-2-19 11:21:35
六合李欣
六合李欣

晚上传上去

回复
2021-2-19 14:24:44
mb6110e17d60703
mb6110e17d60703 回复了 霹雳冬瓜
大佬 banner模块代码有嘛? banner.jar找到没法使用,maven上的banner依赖也没法引入到项目中。。。。。

弄好了么?

回复
2021-8-20 15:18:46
回复
    相关推荐