鸿蒙Java开发模式5:鸿蒙Java自定义轮播图Banner的实现 原创 精华
1.鸿蒙目前Java UI中没有提供轮播图组件,通过对banner是一种基于鸿蒙pageslide的实现循环播放多个广告图片和手动滑动循环等功能的界面,功能已满足大部分要求。 原组件使用的第三方图片加载器来加载图片,本组件我们直接用list来包装图片,传入list来使用banner。实现效果如下:
2.通过对android 图片轮播(banner)的模块开源项目 Banner 进行鸿蒙化的移植和开发的,实现了鸿蒙的第三方组件适配移植
模块和工程目录
在settings.gradle文件中,添加模块,也可以在libs中引用将下载的jar包Banner .jar包,导入工程目录“entry->libs”下。
在moudle级别下的build.gradle文件中添加依赖,在dependences标签中增加对libs目录下jar包的引用。
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) 设置图片加载器 (等三方库)
唉?鸿蒙社区惊现煤油??
煤油???
啊?不是魅族粉丝么?
新年好,不是煤油,哈哈
大佬 banner模块代码有嘛? banner.jar找到没法使用,maven上的banner依赖也没法引入到项目中。。。。。
晚上传上去
弄好了么?