An open API service indexing awesome lists of open source software.

https://github.com/prongbang/looperviewpager

The Simple Looper View Pager Android Library
https://github.com/prongbang/looperviewpager

android looper viewpager-infinity viewpager-looper

Last synced: about 2 months ago
JSON representation

The Simple Looper View Pager Android Library

Awesome Lists containing this project

README

          

# Looper View Pager
The Simple Looper View Pager Android Library

![screenshot gif](https://github.com/prongbang/LooperViewPager/blob/master/screenshots/screenshots.gif?raw=true)

## Download
> build.gradle
```gradle
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
```

### Support Library

```gradle
implementation 'com.github.prongbang:looperviewpager:1.0.2'
```

### AndroidX

```gradle
implementation 'com.github.prongbang:looperviewpager:2.0.0'
```

## How to use
> MainActivity.kt
```kotlin
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val galleries = ArrayList()
galleries.add(Gallery(1, "Gallery 1", "", android.R.color.holo_green_light))
galleries.add(Gallery(2, "Gallery 2", "", android.R.color.holo_red_light))
galleries.add(Gallery(3, "Gallery 3", "", android.R.color.holo_blue_light))
galleries.add(Gallery(4, "Gallery 4", "", android.R.color.holo_orange_light))
galleries.add(Gallery(5, "Gallery 5", "", android.R.color.holo_purple))

val galleryPagerAdapter = GalleryPagerAdapter(supportFragmentManager, vpGallery).apply {
setItems(galleries)
}

vpGallery?.apply {
adapter = galleryPagerAdapter
addOnPageChangeListener(galleryPagerAdapter)
setCurrentItem(1, false)
}

val pageSize = galleries.size
counter.text = ("1/$pageSize")

vpIndicator?.apply {
setupWithViewPager(vpGallery, galleries.size)
addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) {}

override fun onPageScrolled(position: Int, positionOffset: Float,
positionOffsetPixels: Int) {
}

override fun onPageSelected(position: Int) {
counter.text = ("$position/$pageSize")
}
})
}
}

override fun onDestroy() {
super.onDestroy()
vpIndicator.cleared()
}
```

> GalleryPagerAdapter.kt
```kotlin
class GalleryPagerAdapter(fm: FragmentManager, viewPager: ViewPager) : LooperFragmentStatePagerAdapter(fm, viewPager) {

override fun getItem(oldPosition: Int, newPosition: Int): Fragment {
return GalleryFragment.newInstance(content[newPosition])
}
}
```

> Gallery.kt
```kotlin
@Parcelize
data class Gallery(
var id: Int,
var name: String,
var image: String
) : Parcelable
```

> GalleryFragment.kt
```kotlin
class GalleryFragment : Fragment() {

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_gallery, container, false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
arguments?.getParcelable(Gallery::class.java.simpleName)
?.let { gallery ->
context?.let {
rootView.setBackgroundColor(ContextCompat.getColor(it, gallery.backgroundColor))
}
tvMessage.text = gallery.name
}
}

companion object {
fun newInstance(gallery: Gallery): GalleryFragment {
return GalleryFragment().apply {
arguments = Bundle().apply {
putParcelable(Gallery::class.java.simpleName, gallery)
}
}
}
}
}
```

> activity_main.xml
```xml

```

### Thank you