All Projects → wangpeiyuan → Cycleviewpager2

wangpeiyuan / Cycleviewpager2

使用 ViewPager2 实现无限轮播效果,可以用来实现 banner 以及上下滚动文字广告等。Implementing android cycle viewPager with ViewPager2

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Cycleviewpager2

Jxpagecontrol
🚀🚀🚀 自定义pageControl指示器, 支持多种动画, 自定义布局.
Stars: ✭ 246 (+223.68%)
Mutual labels:  cycle, banner
Tycyclepagerview
a simple and usefull cycle pager view ,and auto scroll banner view(轮播图) ,include pageControl for iOS,support Objective-C and swift
Stars: ✭ 1,548 (+1936.84%)
Mutual labels:  cycle, banner
Zybannerview
简单易用, 显示内容定制性强的可循环轮播控件. 可以实现类似淘宝商品详情中侧拉进入详情页的功能.
Stars: ✭ 370 (+386.84%)
Mutual labels:  cycle, banner
Kjbannerviewdemo
轮播图无限自动循环滚动、缩放布局、自带缓存加载读取、支持自定义继承、定制特定样式、动态图和网图混合轮播、支持在Storyboard和Xib中创建并配置其属性、多种滚动方向选择、多种分页控件选择等等
Stars: ✭ 206 (+171.05%)
Mutual labels:  cycle, banner
Yjbannerview
【抱歉,暂时不提供开源】A very popular and highly customized banner view, 无限循环滚动轮播图BannerView、焦点图, 支持Cocoapods 及 Carthage. 支持完全自定义
Stars: ✭ 506 (+565.79%)
Mutual labels:  cycle, banner
Testleavesloading
Android 自定义 View 之 LeavesLoading
Stars: ✭ 55 (-27.63%)
Mutual labels:  android-ui
Fitbutton
The button which can use with icon, text, divider, custom ripple effect, border, corner radius e.t.c.
Stars: ✭ 63 (-17.11%)
Mutual labels:  android-ui
Grocerystore With Server
Grocery Store with server integration
Stars: ✭ 51 (-32.89%)
Mutual labels:  android-ui
Colorpickerview
🎨 Android colorpicker for getting colors from any images by tapping on the desired color.
Stars: ✭ 1,042 (+1271.05%)
Mutual labels:  android-ui
Edxposedmanager
Companion Android application for EdXposed
Stars: ✭ 1,172 (+1442.11%)
Mutual labels:  android-ui
Floatingactionbuttonspeeddial
A Floating Action Button Speed Dial implementation for Android that follows the Material Design specification (https://material.io/components/buttons-floating-action-button#types-of-transitions)
Stars: ✭ 1,164 (+1431.58%)
Mutual labels:  android-ui
Kakao
Nice and simple DSL for Espresso in Kotlin
Stars: ✭ 1,109 (+1359.21%)
Mutual labels:  android-ui
Notificationbanner
Easy to use pop up notification banner for in app local notification.
Stars: ✭ 55 (-27.63%)
Mutual labels:  banner
Nativescript Admob
NativeScript plugin to earn some precious 💰💰 with ads by Google AdMob
Stars: ✭ 64 (-15.79%)
Mutual labels:  banner
Phonenumberverificationui Android
Check out the new style for mobile number verification 😉😉😊😊
Stars: ✭ 52 (-31.58%)
Mutual labels:  android-ui
Slideactionview
An Android view which provides a nice slide-to-left/right interaction.
Stars: ✭ 70 (-7.89%)
Mutual labels:  android-ui
Generator Buildabanner
Yeoman workflow to get a standard or DoubleClick banner started quickly.
Stars: ✭ 49 (-35.53%)
Mutual labels:  banner
Fwcyclescrollview
轮播控件:支持本地图片、网络图片、自定义视图,轮播分页控件有多重可选方案,轮播次数、间隔时间也可设置,更多配置请参考”可设置参数“。提供OC使用Demo。
Stars: ✭ 59 (-22.37%)
Mutual labels:  banner
Rippleview
View that imitates Ripple Effect on click which was introduced in Android L (for Android 2.3+)
Stars: ✭ 1,147 (+1409.21%)
Mutual labels:  android-ui
Battery Meter View
🔋 Material design battery meter (i.e. level, state) view for Android
Stars: ✭ 57 (-25%)
Mutual labels:  android-ui

CycleViewPager2

Introduction

使用 ViewPager2 实现无限轮播效果,可以用来实现 banner 以及上下滚动文字广告等。

Screenshots

  1. MultiplePagerScaleInTransformer

cycle

  1. ZoomOutPageTransformer

cycle_zoom

  1. DepthPageTransformer

cycle_depth

Features

  • 支持无限自动轮播
  • 支持水平竖直方向
  • 支持圆点指示符及自定义
  • 支持一屏显示 3 个 item 的切换效果
  • 支持 ZoomOutPageTransformer & DepthPageTransformer 效果

Getting started

在项目的根节点的 build.gradle 中添加如下代码

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

在项目的 build.gradle 中添加

dependencies {
    implementation 'com.github.wangpeiyuan:CycleViewPager2:v1.0.7'
}

注意:还需要自行添加 ViewPager2 的依赖。如:

dependencies {
    implementation "androidx.viewpager2:viewpager2:1.0.0"
}

ViewPager2 最新版本请点击此处

Usage

  1. 在 XML 布局文件中:
<com.wangpeiyuan.cycleviewpager2.CycleViewPager2
        android:id="@+id/banner"
        android:layout_width="0dp"
        android:layout_height="250dp"
        android:layout_marginTop="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
  1. 继承 CyclePagerAdapterCyclePagerFragmentAdapter 实现相关方法,跟 RecyclerViewAdapter 基本类似,如:
private inner class MyCyclePagerAdapter : CyclePagerAdapter<PagerViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PagerViewHolder {
        return PagerViewHolder(LayoutInflater.from(parent.context)
                .inflate(R.layout.fragment_pager, parent, false)
        )
    }

    override fun getRealItemCount(): Int = items.size

    override fun onBindRealViewHolder(holder: PagerViewHolder, position: Int) {
        holder.ivPager.setImageResource(items[position])
        holder.tvTitle.text = position.toString()
    }
}

private inner class PagerViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    var ivPager: ImageView = itemView.findViewById(R.id.iv_pager)
    var tvTitle: TextView = itemView.findViewById(R.id.tv_title)
} 
  1. 通过 CycleViewPager2 设置相关参数。
//设置 adapter,此 adapter 必须是继承自 CyclePagerAdapter 或 CyclePagerFragmentAdapter
cycleViewPager2.setAdapter(adapter)
//设置指示符
cycleViewPager2.setIndicator(indicator)
//设置自动轮播间隔
cycleViewPager2.setAutoTurning(autoTurningTime)
//设置切换效果,可以多个效果组合
cycleViewPager2.setPageTransformer(compositePageTransformer)
//添加间距
cycleViewPager2.addItemDecoration(itemDecoration)
//添加切换监听
cycleViewPager2.registerOnPageChangeCallback(pageChangeCallback)

cycleViewPager2.setOffscreenPageLimit(limit)

cycleViewPager2.setOrientation(orientation)

或者使用 CycleViewPager2Helper 方式。

CycleViewPager2Helper(banner)
            .setAdapter(adapter)
            .setMultiplePagerScaleInTransformer(
                nextItemVisiblePx.toInt(),
                currentItemHorizontalMarginPx.toInt(),
                0.1f
            )
            .setDotsIndicator(
                dotsRadius,
                Color.RED,
                Color.WHITE,
                dotsPadding,
                0,
                dotsBottomMargin.toInt(),
                0,
                DotsIndicator.Direction.CENTER
            )
            .setAutoTurning(3000L)
            .build()
  1. 更多特殊效果
  • 指示符(Indicator),目前库中仅简单实现了圆点的指示符 DotsIndicator,更多的效果可以实现 Indicator 接口自定义,具体可以参考 DotsIndicator 的实现。
  • MultiplePagerScaleInTransformer,实现了一屏多个的效果,这个效果需要配合 MarginItemDecoration 来使用(也可以通过设置 item 的间距达到相同的效果)。
  • 更多的切换效果(PageTransformer),需要自己实现 ViewPager2.PageTransformer

License

Apache License, Version 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].