/Swiper

Android library for swiping views and fragments with default indicators and view transitions.

Primary LanguageKotlin

Swiper

Android library for swiping views and fragments with default indicators and view transitions.

Usage

Import the library ('swiper') or aar file to your project.

In app/gradle.build

dependencies {
    implementation project(path: ':swiper')
}

minSdkVersion = '21'

Example

For views, use ViewAdapter.

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Swiper.ViewHolder {
        val view = LayoutInflater.from(context).inflate(R.layout.view_item, parent, false)
        return Swiper.ViewHolder(view)
    }

    override fun onBindViewHolder(holder: Swiper.ViewHolder, position: Int) {
    	//Bind your view here
        }
    }

For fragments,

In MainActivity.kt

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val swiper: Swiper = findViewById(R.id.swiper)
	
        swiper.setAdapter(Swiper.FragmentAdapter(this, fragmentList))
        //swiper.setAdapter(ViewItemAdapter(this, itemList))

        //swiper.setIndicator(Swiper.DotIndicator(this))
        //swiper.setPageTransformer(Swiper.DepthPageTransformer())
    }

In activity_main.xml

    <com.losersclub.swiper.Swiper
        android:id="@+id/swiper"
        app:swiperPageTransformer="depthPageTransformer"
        app:swiperIndicatorActive="@drawable/dot_active"
        app:swiperIndicatorInactive="@drawable/dot_inactive"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_width="0dp"
        android:layout_height="0dp"/>

Indicators

There are two default indicators: DotIndicator and BarIndicator

Dot Indicator

screenrecord

Custom Indicator

You can set your custom indicators in xml or in code.

screenrecord

I haven't tested other indicator libraries with update.

You can also use other opensource indicator libraries such as InkPageIndicator.

    inkPageIndicator.setViewPager(swiper.viewPager2);

Other awesome indicators are:

Page Transformers

There are two default page transformers: DepthPageTransformer and ZoomOutPageTransformer

You can create your own page transformer as

class YourPageTransformer : ViewPager2.PageTransformer {
        override fun transformPage(view: View, position: Float) {
            view.apply {
	    	// Transform your page here
            }
        }
    }