glide-slider

Additional

Language
Java
Version
1.0 (Jul 19, 2023)
Created
Jul 16, 2023
Updated
Nov 1, 2023
Owner
Karim Abdallah (karim-eg)
Contributor
Karim Abdallah (karim-eg)
1
Activity
Badge
Generate
Download
Source code

Advertisement

Android Glide Slider Library

Create a slider view inside your app without viewpager or complex adapters.



Screenshot

Example App

https://github.com/karim-eg/glide-slider/tree/master/app


Usage

Step 1

Add this line to root build.gradle at allprojects block code:

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

then add this line into your build.gradle app level.

dependencies {
    implementation "com.github.karim-eg:glide-slider:1.0"
}

Step 2

Add this widget into your xml activity file

<co.encept.slider.SliderLayout
        android:id="@+id/slider"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_marginTop="8dp" />

Step 3

Add these permessions into your AndroidManifest.xml file

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

Note: If you want to load images from the internet, you need both the INTERNET and READ_EXTERNAL_STORAGE permissions to allow files from the internet to be cached into local storage, but if you want to load images from drawable, then no additional permissions are necessary.


Step 4

Now Open Your activity and add SliderLayout at class level

private lateinit var mDemoSlider: SliderLayout

Step 5

at onCreate, assign the sliderLayout that you just defined before

just type the variable name and assign the slider from xml file by viewBinding or findViewById

mDemoSlider = binding.slider

Step 6

at onCreate, Now let's add some item's to the slider.

Define two ArrayLists the first one called itemName, the secondone called itemUrl.

val itemName = ArrayList<String>()
val itemUrl = ArrayList<String>()

// 1st item in the slider
itemUrl.add("https://www.revive-adserver.com/media/GitHub.jpg")
itemName.add("JPG Format")

// 2nd item in the slider
itemUrl.add("https://e7.pngegg.com/pngimages/519/64/png-clipart-black-laptop-computer-illustration-computer-programming-web-development-computer-software-programming-language-theme-coder-electronics-gadget.png")
itemName.add("PNG Format")

// 3rd item in the slider
itemUrl.add("https://i.pinimg.com/originals/e4/26/70/e426702edf874b181aced1e2fa5c6cde.gif")
itemName.add("GIF Format")

Step 7

at onCreate, Add This Lines below the other code that you've added before

val requestOptions = RequestOptions()
requestOptions.centerInside()

for (pos in itemUrl.indices) {
    // if you want show image only without description text use DefaultSliderView(this) instead
    val sliderView = TextSliderView(this)

    // initialize SliderLayout
    sliderView
        .image(itemUrl[pos])
        .description(itemName[pos])
        .setRequestOption(requestOptions)
        .setProgressBarVisible(true)

        // handle slider click listener:
        .setOnSliderClickListener { slider ->
            // TODO: Add your click listener implementation here.
            runOnUiThread {
                Toast.makeText(this, "name: ${slider.bundle.getString("name")}\nurl: ${slider.bundle.getString("url")}",
                    Toast.LENGTH_SHORT).show()
            }
        }

    // add image url and image name to bundle
    sliderView.bundle(Bundle())
    sliderView.bundle.putString("name", itemName[pos])
    sliderView.bundle.putString("url", itemUrl[pos])
    mDemoSlider.addSlider(sliderView)
}

/**
 * set slider animation see all Transformer animations at [com.glide.slider.library.SliderLayout.Transformer]
 */
mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Tablet)
mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom)
mDemoSlider.setCustomAnimation(DescriptionAnimation())
// timer between every slider scroll (in milliseconds)
mDemoSlider.setDuration(4000)
// set true if you want to stop slider cycling when user touch it.
mDemoSlider.stopCyclingWhenTouch(false)

Step 8

don't forget to close the sliderLayout cycle when activity stops to prevent a memory leak.

override fun onStop() {
    super.onStop()
    // To prevent a memory leak on rotation, make sure to call stopAutoCycle() on the slider before activity or fragment is destroyed
    mDemoSlider.stopAutoCycle()
}

Optional

There are some default indicators. If you want to use a provided indicator:

<co.encept.slider.indicators.PagerIndicator
        android:id="@+id/custom_indicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"/>

You can also customize this library via:

styles.xml
colors.xml

now you've implemented slider library into your app if you want more advanced options you can take a look here: ActivityWithImplementations

That's All don't forget to star the project & fork if you want to develop the library.

Powered by Encept Ltd.

* This Library Was Forked From: https://github.com/firdausmaulan/GlideSlider


Used by

List of apps on Play Store where this library used. Contact me if you want your app listed.

Icon Application
Coding Oasis - Learn Programming

Contributors


Stargazers

Forkers