Coder Social home page Coder Social logo

alzoubimohammed / zexorecyclerplayer Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 0.0 144 KB

ZExoRecyclerPlayer is an Android library that allows developers to easily create RecyclerView with Exoplayer .

License: MIT License

Kotlin 100.00%
exoplayer exoplayer-demo exoplayer-video exoplayer2 playvideoonlist recyclerview scroll scrolling video

zexorecyclerplayer's Introduction

ZExoRecyclerPlayer

Description

ZExoRecyclerPlayer is an Android library that allows developers to easily create RecyclerView with Exoplayer .

Please feel free to use this.

Features

  • AutoPlay Video When scroll RecyclerView

Demo

Getting Started

Dependencies

  • Step 1. Add the JitPack repository to your build file:
allprojects {
	repositories {
	 ...
	 maven { url 'https://jitpack.io' }
		}
	}
  • Step 2. Add the dependency:
dependencies {

  implementation 'com.github.alzoubiMohammed:ZExoRecyclerPlayer:1.2.2'
	
	}

Usage

  • Step 1. Add singleton Exoplayer and singleton PlayerView like {StyledPlayerView,PlayerControlView....} recommend to use Hilt Like :
@Module()
AppModule {
   ....
   
  @Provides
    fun provideExoplayerInstance(
        @ApplicationContext context: Context,
    ): ExoPlayer {
        return ExoPlayer.Builder(context).build()
    }

    @Singleton
    @Provides
    fun providePlayerView(
        @ApplicationContext context: Context, exoPlayer: ExoPlayer
    ): StyledPlayerView {
        val playerView = StyledPlayerView(context)
        playerView.resizeMode = AspectRatioFrameLayout.RESIZE_MODE_ZOOM
        playerView.useController = false
        playerView.player = exoPlayer
        ...
        return playerView
    }
    }
  • Step 2. Setup the RecycleView on Fragment Like :
    class Fragment{
        @Inject
        lateinit var exoPlayer: ExoPlayer

        @Inject
        lateinit var playerView: StyledPlayerView
         ...
        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         ...
         recyclerView.setupWithExoplayer(
                exoPlayer,
                playerView,
                viewLifecycleOwner
            )
         
            }
      }
  • and on Activity Like :
       class Activity{
         @Inject
         lateinit var exoPlayer: ExoPlayer

         @Inject
         lateinit var playerView: StyledPlayerView
          ...
        override fun onCreate(savedInstanceState: Bundle?) {
          ...
         recyclerView.setupWithExoplayer(
                exoPlayer,
                playerView,
                this
            )
         
            }
      }

  • Step 3.ViewHolder XML needs to be like :
   <androidx.constraintlayout.widget.ConstraintLayout
        ...
             >
          <FrameLayout
             ... 
           android:id="@+id/videoContainer"
   
           />
             
          <androidx.appcompat.widget.AppCompatImageView
             ...
             android:id="@+id/videoThumbnail"
  
           />

         <ProgressBar
            ...
           android:id="@+id/videoProgress"
          />

   </androidx.constraintlayout.widget.ConstraintLayout>

  • Step 4. finally ViewHolder need to implement the VideoPlayerSetup :
  • and you can read more about MediaSource
  class VideoViewHolder(itemView:View) :
  RecyclerView.ViewHolder(itemView), VideoPlayerSetup {
     ...
     
    fun bind(videoItem:VideoItem){
     *important to help ZExoRecyclerPlayer to know are ViewHolder has a video
      itemView.tag = this
       ...
    }
    
   override fun videoContainer(): ViewGroup {
            return itemView.videoContainer
        }

        override fun videoProgress(): View {
            return itemView.videoProgress
        }

        override fun videoThumbnail(): ImageView {
            return itemView.videoThumbnail
        }

        override fun attachment(): VideoData {
            return VideoData(videoItem.mediaSource,videoItem.currentPosition?:0L)
        }
  
  
     }

License

This project is licensed under the [MIT License] License - see the LICENSE.md file for details

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.