# ViewPagerHelper **Repository Path**: chinasoft_ohos/ViewPagerHelper ## Basic Information - **Project Name**: ViewPagerHelper - **Description**: 这个一个 PageSlider工具类,能够帮你快速实现导航栏轮播图 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-03-23 - **Last Updated**: 2021-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ViewPagerHelper #### 项目介绍 - 项目名称:ViewPagerHelper - 所属系列:openharmony的第三方组件适配移植 - 功能:能够帮你快速实现导航栏轮播图,app引导页,内置多种tab指示器,让你告别 PageSlider 的繁琐操作,专注逻辑功能 - 项目移植状态:Banner部分动画效果(CARD,MZ)有差异 - 调用差异:无 - 开发版本:sdk6,DevEco Studio 2.2 Beta1 - 基线版本:release v2.9 #### 效果演示 |圆形轮播指示器|矩形轮播指示器| |:---:|:---:| ||| |扇形轮播|文字轮播指示器| |:---:|:---:| ||| |三角形Tab指示器|矩形Tab指示器| |:---:|:---:| ||| |渐变Tab指示器| |:---:| || #### 安装教程 1.在项目根目录下的build.gradle文件中, ```gradle allprojects { repositories { maven { url 'https://s01.oss.sonatype.org/content/repositories/releases/' } } } ``` 2.在entry模块的build.gradle文件中, ```gradle dependencies { implementation('com.gitee.chinasoft_ohos:ViewPagerHelper:1.0.0') ...... } ``` 在sdk6,DevEco Studio 2.2 Beta1下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 #### 使用说明 Banner + Indicator 1. 布局文件定义,提供控件:BannerViewPager ```xml ``` 2. 接着,在 AbilitySlice 中,这样配置 ```java BannerViewPager bannerViewPager = (BannerViewPager)layout.findComponentById( ResourceTable.Id_page_slider); CircleIndicator indicator = (CircleIndicator)layout.findComponentById( ResourceTable.Id_page_slider_indicator); //把需要的 indicator 添加进去 bannerViewPager.addIndicator(indicator); ``` 3.设置监听即可,Layout_item_banner 为要展示的内容,比如一个 Image,或者参考示例 其中,setText 为模板方法,为了简便代码,当然还有其他一些方法,可查阅 PageHelperListener onItemClick 为点击事件,当然还有其他方法,重写即可,比如子控件事件 onItemChildClick,如果有子控件 的点击事件,需要先在 bindView 中注册,比如 addChildrenClick(view,R.id.item_text,position),其他一些方法,可查阅 PageHelperListener ```java //设置弹幕View相关回调 bannerViewPager.setPageListener(ResourceTable.Layout_item_banner, mDatas, new PageHelperListener() { @Override public void bindView(Component view, final TestBean data, int position) { setText(view, ResourceTable.Id_des, data.msg); setImageView(view, ResourceTable.Id_image, data.resId); } @Override public void onItemClick(Component view, TestBean data, int position) { super.onItemClick(view, data, position); MyToast.show(getContext(), data.msg + " " + position, MyToast.ToastLayout.BOTTOM); } }); ``` 4.如果你要使用弧形图片,可以用在你的layout 中,使用 ArcImageView 这个控件,可以这样配置 ```xml ``` 5.如果你要使用缩放控件,可以用 ScaleImageView 这个控件,可以这样配置: ```xml ``` 6.其他说明 ```java startAnim() 启动轮播,即开始轮播 stopAnim() 关闭轮播,可以通过这两个api实现轮播与否 isOutVisiableWindow() 判断轮播图是否超过可视界面 ``` TabIndicator 1.布局文件定义,提供控件:TabIndicator ```xml ``` 2.初始化 ```java List titles = new ArrayList<>(); titles.add("新闻"); titles.add("娱乐"); titles.add("学习"); pageSlider = (PageSlider)findComponentById(ResourceTable.Id_page_slider); pageSliderIndicator = (TabIndicator)findComponentById( ResourceTable.Id_page_slider_indicator); ``` 3.把 TabIndicator 跟viewpager关联起来 ```java bannerViewPager.setPageSwitchTime(100); bannerViewPager.setCentralScrollMode(true); bannerViewPager.setProvider(new TabPagerProvider(this, titles)); pageSliderIndicator.textSize(50); pageSliderIndicator.tabWidth(100); pageSliderIndicator.tabHeight(8); pageSliderIndicator.defaultColor(Color.getIntColor("#696666")); pageSliderIndicator.moveColor(Color.getIntColor("#FF4081")); pageSliderIndicator.tabColor(Color.getIntColor("#FF4081")); pageSliderIndicator.tabTextType(TabTextType.COLOR); pageSliderIndicator.showTab(true); pageSliderIndicator.setTabData(pageSlider, titles, new TabIndicator.TabClickListener() { @Override public void onClick(int position) { } }); ``` 自定义属性 **BannerViewPager** | 名称 | 类型 |说明 | |---|---|---| |banner_isAutoLoop|boolean|是否自动轮播| |banner_looptime|integer|轮播的时间| |banner_switchtime|integer|viewpager的切换速度| |banner_loop_max_count|integer|超过这个数字时,才会轮播效果| |banner_card_height|integer,dimension|卡片的高度| |banner_iscycle|boolean|是否循环| |banner2_l_margin|dimension|Viewpager2专属,左边偏移量| |banner2_r_margin|dimension|Viewpager2专属,右边偏移量| **CircleIndicator** | 名称 | 类型 |说明 | |---|---|---| |cir_type|integer|效果,支持3中,normal、cirToRect、scale| |cir_normalColor|color|默认的颜色| |cir_selectedColor|color|选中时的颜色| |cir_horizon_margin|dimension|两个小圆球的距离| |cir_size|dimension|小球的大小| |cir_rect_width|dimension|当type为 cirToRect时,矩形的宽度| |cir_scale_factor|float|当type 为scale,放大倍数| |cir_canMove|boolean|是否可移动,默认支持移动| **RectIndicator** | 名称 | 类型 |说明 | |---|---|---| |rect_normalColor|color|默认的颜色| |rect_selectedColor|color|选中时的颜色| |rect_horizon_margin|dimension|两个矩形的距离| |rect_width|dimension|矩形的宽度| |rect_height|dimension|矩形的高度| |rect_round_size|dimension|矩形的圆角| |rect_canMove|boolean|是否可移动,默认支持移动| **TextIndicator** 其实就是一个 Text ,自己配置大小颜色和背景即可 **弧形图片 ArcImageView** | 名称 | 类型 |说明 | |---|---|---| |arc_height|dimension|弧度的高度| |arc_blur|integer|图片的模糊度,0到25| |arc_use_color|color,reference|是否使用背景色| |arc_scaleX|dimension|缩放中心点X方向| |arc_scaleY|dimension|缩放中心点Y方向| |arc_scaleFactor|float|缩放比例| |arc_auto_fix|boolean|自动适配大小,如果用glide,可以忽略,默认为true| **顶部viewpager指示器 TabIndicator** | 名称 | 类型 |说明 | |---|---|---| |visiabel_size|integer|可视化个数,比如有一排,我们就只要显示4个| |tab_color|color,reference|指示器的颜色| |tab_show|boolean|是否显示指示器| |tab_text_type|normaltext,colortext|顶部文字的类型,nromaltext为普通的text,corlortext为文件渐变| |tab_width|dimension|指示器的宽度| |tab_height|dimension|指示器的高度| |tab_textsize|dimension|顶部文字的大小| |tab_text_default_color|color,reference|顶部文字默认的颜色| |tab_text_change_color|color,reference|移动时,顶部文字的颜色| |tap_type|tri,rect|指示器类型,有三角形或者圆条| |tab_iscanscroll|boolean|指示器是否支持滚动| **渐变文字 ColorTextVIew** | 名称 | 类型 |说明 | |---|---|---| |colortext_size|dimension|文字大小| |colortext_default_color|reference,color|默认颜色| |colortext_change_color|reference,color|渐变颜色| **缩放控件 ScaleImageView** | 名称 | 类型 |说明 | |---|---|---| |scale_auto_time|reference,integer|双击时,达到放大的时间| |scale_limit_board|boolean|是否限制边界,即不能缩放到比控件小| |scale_autofit|boolean|自动适配缩放值,有些图片是正方形,如果你的高度没设定好,建议设置为false,不能会变形| |scale_double_factor|integer|双击时放大倍数| |scale_max_factor|integer|可放大的最大倍数 #### 测试信息 CodeCheck代码测试无异常 CloudTest代码测试无异常 病毒安全检测通过 当前版本demo功能与原组件基本无差异 #### 版本迭代 - 1.0.0