Site icon C1CTech

Android ViewPager with Mediaplayer

<p>In the previous article&comma; we have talked about <strong><span style&equals;"color&colon; &num;008000&semi;"><a style&equals;"color&colon; &num;008000&semi;" href&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;android-sliding-views-using-viewpager-with-pageradapterfragmentpageradapter&sol;">ViewPager<&sol;a><&sol;span><&sol;strong> to create swipe views in Android application in greater detail&period; In this article&comma; we will talk about how to add buttons in different pages of viewPager&comma; how to play and stop song on button click using MediaPlayer and also how to work with Mediaplayer on page scrolled&period;<&sol;p>&NewLine;<p><strong><span style&equals;"color&colon; &num;008000&semi;">Get the full code from<&sol;span><&sol;strong> <span style&equals;"color&colon; &num;0000ff&semi;"><strong><a style&equals;"color&colon; &num;0000ff&semi;" href&equals;"https&colon;&sol;&sol;github&period;com&sol;arunk7839&sol;TestApp">here&period;<&sol;a><&sol;strong><&sol;span><&sol;p>&NewLine;<p><span class&equals;"embed-youtube" style&equals;"text-align&colon;center&semi; display&colon; block&semi;"><amp-youtube data-videoid&equals;"eRXJYuM3UZs" data-param-rel&equals;"1" data-param-showsearch&equals;"0" data-param-showinfo&equals;"1" data-param-iv&lowbar;load&lowbar;policy&equals;"1" data-param-fs&equals;"1" data-param-hl&equals;"en-US" data-param-autohide&equals;"2" data-param-wmode&equals;"transparent" width&equals;"1200" height&equals;"675" layout&equals;"responsive"><a href&equals;"https&colon;&sol;&sol;www&period;youtube&period;com&sol;watch&quest;v&equals;eRXJYuM3UZs" placeholder><amp-img src&equals;"https&colon;&sol;&sol;i&period;ytimg&period;com&sol;vi&sol;eRXJYuM3UZs&sol;hqdefault&period;jpg" alt&equals;"YouTube Poster" layout&equals;"fill" object-fit&equals;"cover"><noscript><img src&equals;"https&colon;&sol;&sol;i&period;ytimg&period;com&sol;vi&sol;eRXJYuM3UZs&sol;hqdefault&period;jpg" loading&equals;"lazy" decoding&equals;"async" alt&equals;"YouTube Poster"><&sol;noscript><&sol;amp-img><&sol;a><&sol;amp-youtube><&sol;span><&sol;p>&NewLine;<h3><strong><span style&equals;"color&colon; &num;000080&semi;">ViewPager<&sol;span><&sol;strong><&sol;h3>&NewLine;<p>ViewPager is a layout widget which is capable of holding many child views and each child view represents a separate page&period; To insert child views that represent each page we need to hook up the viewpager to a <strong><span style&equals;"color&colon; &num;008000&semi;"><a style&equals;"color&colon; &num;008000&semi;" href&equals;"https&colon;&sol;&sol;developer&period;android&period;com&sol;reference&sol;android&sol;support&sol;v4&sol;view&sol;PagerAdapter">pagerAdapter<&sol;a><&sol;span>&period;<&sol;strong><&sol;p>&NewLine;<h3><span style&equals;"color&colon; &num;000080&semi;"><strong>Using PagerAdapter<&sol;strong><&sol;span><&sol;h3>&NewLine;<p><span style&equals;"color&colon; &num;008000&semi;"><strong>PagerAdapter<&sol;strong><&sol;span> allow us to populate pages inside of a viewpager&period;<&sol;p>&NewLine;<p>When you implement a PagerAdapter&comma; you must override the following methods at minimum&colon;<&sol;p>&NewLine;<ul>&NewLine;<li><strong><a href&equals;"http&colon;&sol;&sol;developer&period;android&period;com&sol;reference&sol;android&sol;support&sol;v4&sol;view&sol;PagerAdapter&period;html&num;getCount&lpar;&rpar;"><span style&equals;"color&colon; &num;0000ff&semi;">getCount&lpar;&rpar;<&sol;span><&sol;a><&sol;strong> – Return the number of views available&period;&comma; i&period;e&period;&comma; number of pages to be displayed&sol;created in the ViewPager&period;<&sol;li>&NewLine;<li><strong><a href&equals;"http&colon;&sol;&sol;developer&period;android&period;com&sol;reference&sol;android&sol;support&sol;v4&sol;view&sol;PagerAdapter&period;html&num;instantiateItem&lpar;android&period;view&period;ViewGroup&comma;&percnt;20int&rpar;"><span style&equals;"color&colon; &num;0000ff&semi;">instantiateItem&lpar;&rpar;<&sol;span><&sol;a> <&sol;strong>– This method will create the page for the given position passed to it as an argument&period; In our case&comma; we inflate our layout resource which contains one imageView for image and one textView which will contain image related description&period; Finally&comma; the inflated view is added to the container &lpar; ViewPager&rpar; and return it as well&period;<&sol;li>&NewLine;<li><strong><a href&equals;"http&colon;&sol;&sol;developer&period;android&period;com&sol;reference&sol;android&sol;support&sol;v4&sol;view&sol;PagerAdapter&period;html&num;destroyItem&lpar;android&period;view&period;ViewGroup&comma;&percnt;20int&comma;&percnt;20java&period;lang&period;Object&rpar;"><span style&equals;"color&colon; &num;0000ff&semi;">destroyItem&lpar;&rpar;<&sol;span><&sol;a> <&sol;strong>– Removes the page from the container for the given position&period; We simply removed object using <span style&equals;"color&colon; &num;008000&semi;"><a style&equals;"color&colon; &num;008000&semi;" href&equals;"http&colon;&sol;&sol;developer&period;android&period;com&sol;reference&sol;android&sol;view&sol;ViewGroup&period;html&num;removeView&lpar;android&period;view&period;View&rpar;"><strong>removeView<&sol;strong>&lpar;&rpar;<&sol;a><&sol;span> but could’ve also used <span style&equals;"color&colon; &num;008000&semi;"><strong><a style&equals;"color&colon; &num;008000&semi;" href&equals;"http&colon;&sol;&sol;developer&period;android&period;com&sol;reference&sol;android&sol;view&sol;ViewGroup&period;html&num;removeViewAt&lpar;int&rpar;">removeViewAt&lpar;&rpar;<&sol;a><&sol;strong><&sol;span> by passing it the position&period;<&sol;li>&NewLine;<li><strong><span style&equals;"color&colon; &num;0000ff&semi;"><a style&equals;"color&colon; &num;0000ff&semi;" href&equals;"http&colon;&sol;&sol;developer&period;android&period;com&sol;reference&sol;android&sol;support&sol;v4&sol;view&sol;PagerAdapter&period;html&num;isViewFromObject&lpar;android&period;view&period;View&comma;&percnt;20java&period;lang&period;Object&rpar;">isViewFromObject&lpar;&rpar;<&sol;a><&sol;span> <&sol;strong>– ViewPager associates each page with a key Object instead of working with Views directly&period; This key is used to track and uniquely identify a given page independent of its position in the adapter&period; This method checks whether the View passed to it &lpar;representing the page&rpar; is associated with that key object&lpar;returned by<strong> <span style&equals;"color&colon; &num;008000&semi;"><a style&equals;"color&colon; &num;008000&semi;" href&equals;"https&colon;&sol;&sol;developer&period;android&period;com&sol;reference&sol;android&sol;support&sol;v4&sol;view&sol;PagerAdapter&period;html&num;instantiateItem&lpar;android&period;view&period;ViewGroup&comma;&percnt;20int&rpar;">instantiateItem&lpar;ViewGroup&comma; int&rpar;<&sol;a><&sol;span><&sol;strong> or not&period; It is required by a PagerAdapter to function properly&period; It returns true if view is associated with the key object &period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3><strong>C<span style&equals;"color&colon; &num;000080&semi;">reating New Project<&sol;span><&sol;strong><&sol;h3>&NewLine;<p><strong>1<&sol;strong>&period;Create a new project in <span style&equals;"color&colon; &num;008000&semi;"><strong>Android Studio<&sol;strong><&sol;span> from <span style&equals;"color&colon; &num;008000&semi;"><strong>File &Implies; New Project<&sol;strong><&sol;span> by filling the required details&period; When it prompts you to select the activity&comma; choose <span style&equals;"color&colon; &num;008000&semi;"><strong>Empty Activity<&sol;strong><&sol;span> and continue&period;<&sol;p>&NewLine;<p><strong>2<&sol;strong>&period;Open the layout of the <strong>MainActivity<&sol;strong> i&period;e <strong><span style&equals;"color&colon; &num;008000&semi;">activity&lowbar;main<&sol;span><&sol;strong> and add <strong><span style&equals;"color&colon; &num;0000ff&semi;">viewPager<&sol;span><&sol;strong> as shown below&colon;<&sol;p>&NewLine;<p><strong><span style&equals;"color&colon; &num;008000&semi;">activity&lowbar;main&period;xml<&sol;span><&sol;strong><&sol;p>&NewLine;<pre>&lt&semi;&quest;xml version&equals;"1&period;0" encoding&equals;"utf-8"&quest;&gt&semi;&NewLine;&lt&semi;RelativeLayout xmlns&colon;android&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res&sol;android"&NewLine; xmlns&colon;tools&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;tools"&NewLine; android&colon;layout&lowbar;width&equals;"match&lowbar;parent"&NewLine; android&colon;layout&lowbar;height&equals;"match&lowbar;parent"&NewLine; tools&colon;context&equals;"&period;MainActivity"&gt&semi;&NewLine;&NewLine;&NewLine; &lt&semi;androidx&period;viewpager&period;widget&period;ViewPager&NewLine; android&colon;id&equals;"&commat;&plus;id&sol;viewpager"&NewLine; android&colon;layout&lowbar;width&equals;"match&lowbar;parent"&NewLine; android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"&NewLine; &sol;&gt&semi;&NewLine;&NewLine;&lt&semi;&sol;RelativeLayout&gt&semi;<&sol;pre>&NewLine;<p><strong>3<&sol;strong>&period;Inside <span style&equals;"color&colon; &num;008000&semi;"><strong>MainActivity<&sol;strong><&sol;span> before setting adapter in viewPager firstly we will create one layout file <span style&equals;"color&colon; &num;008000&semi;"><strong>content&period;xml<&sol;strong><&sol;span> which defines the view of a separate page adding to viewPager&period;<&sol;p>&NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>content&period;xml<&sol;strong><&sol;span><&sol;p>&NewLine;<pre>&lt&semi;&quest;xml version&equals;"1&period;0" encoding&equals;"utf-8"&quest;&gt&semi;&NewLine;&lt&semi;RelativeLayout xmlns&colon;android&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res&sol;android"&NewLine; android&colon;layout&lowbar;width&equals;"match&lowbar;parent"&NewLine; android&colon;layout&lowbar;height&equals;"match&lowbar;parent"&gt&semi;&NewLine;&NewLine; &lt&semi;ImageView&NewLine; android&colon;id&equals;"&commat;&plus;id&sol;imageview"&NewLine; android&colon;layout&lowbar;width&equals;"190dp"&NewLine; android&colon;layout&lowbar;height&equals;"190dp"&NewLine; android&colon;layout&lowbar;alignParentTop&equals;"true"&NewLine; android&colon;layout&lowbar;centerInParent&equals;"true"&NewLine; android&colon;layout&lowbar;marginTop&equals;"12dp" &sol;&gt&semi;&NewLine;&NewLine; &lt&semi;TextView&NewLine; android&colon;id&equals;"&commat;&plus;id&sol;textview"&NewLine; android&colon;layout&lowbar;width&equals;"wrap&lowbar;content"&NewLine; android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"&NewLine; android&colon;layout&lowbar;below&equals;"&commat;&plus;id&sol;imageview"&NewLine; android&colon;layout&lowbar;centerInParent&equals;"true"&NewLine; android&colon;layout&lowbar;marginTop&equals;"12dp"&NewLine; android&colon;textSize&equals;"36sp"&NewLine; android&colon;textStyle&equals;"bold" &sol;&gt&semi;&NewLine;&NewLine; &lt&semi;LinearLayout&NewLine; android&colon;layout&lowbar;width&equals;"match&lowbar;parent"&NewLine; android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"&NewLine; android&colon;layout&lowbar;below&equals;"&commat;id&sol;textview"&NewLine; android&colon;layout&lowbar;marginTop&equals;"12dp"&NewLine; android&colon;orientation&equals;"horizontal"&gt&semi;&NewLine;&NewLine; &lt&semi;Button&NewLine; android&colon;id&equals;"&commat;&plus;id&sol;btn&lowbar;play"&NewLine; android&colon;layout&lowbar;width&equals;"wrap&lowbar;content"&NewLine; android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"&NewLine; android&colon;layout&lowbar;centerHorizontal&equals;"true"&NewLine; android&colon;layout&lowbar;margin&equals;"8dp"&NewLine; android&colon;background&equals;"&commat;android&colon;color&sol;holo&lowbar;green&lowbar;light"&NewLine; android&colon;layout&lowbar;weight&equals;"5"&NewLine; android&colon;textStyle&equals;"bold"&NewLine; android&colon;textSize&equals;"18sp"&NewLine; android&colon;text&equals;"Play" &sol;&gt&semi;&NewLine;&NewLine; &lt&semi;Button&NewLine; android&colon;id&equals;"&commat;&plus;id&sol;btn&lowbar;stop"&NewLine; android&colon;layout&lowbar;width&equals;"wrap&lowbar;content"&NewLine; android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"&NewLine; android&colon;layout&lowbar;below&equals;"&commat;&plus;id&sol;textview"&NewLine; android&colon;layout&lowbar;centerHorizontal&equals;"true"&NewLine; android&colon;layout&lowbar;margin&equals;"8dp"&NewLine; android&colon;background&equals;"&commat;android&colon;color&sol;holo&lowbar;red&lowbar;light"&NewLine; android&colon;layout&lowbar;weight&equals;"5"&NewLine; android&colon;textStyle&equals;"bold"&NewLine; android&colon;textSize&equals;"18sp"&NewLine; android&colon;text&equals;"Stop" &sol;&gt&semi;&NewLine;&NewLine; &lt&semi;&sol;LinearLayout&gt&semi;&NewLine;&NewLine;&NewLine; &lt&semi;&sol;RelativeLayout&gt&semi;&NewLine;&NewLine;&NewLine;&NewLine;<&sol;pre>&NewLine;<p><strong>4<&sol;strong>&period;Under <span style&equals;"color&colon; &num;0000ff&semi;"><strong>res<&sol;strong><&sol;span> directory open <span style&equals;"color&colon; &num;008000&semi;"><strong>drawable<&sol;strong><&sol;span> folder and copy and paste all the images which you want to display like this as shown below&colon;<&sol;p>&NewLine;<p><img class&equals;"alignnone size-full wp-image-1236" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2019&sol;09&sol;Screenshot-2019-09-19-17&period;58&period;08-3061011925-1568961813624&period;png" alt&equals;"Screenshot 2019-09-19 17&period;58&period;08" width&equals;"514" height&equals;"237" &sol;><&sol;p>&NewLine;<&excl;-- WP QUADS Content Ad Plugin v&period; 2&period;0&period;98&period;1 -->&NewLine;<div class&equals;"quads-location quads-ad2" id&equals;"quads-ad2" style&equals;"float&colon;none&semi;margin&colon;0px&semi;">&NewLine;&NewLine;<&sol;div>&NewLine;&NewLine;<p><strong>5<&sol;strong>&period;Create new folder <span style&equals;"color&colon; &num;008000&semi;"><strong>raw<&sol;strong><&sol;span> under <span style&equals;"color&colon; &num;008000&semi;"><strong>res<&sol;strong><&sol;span> directory and copy and paste all the songs which you want to play&period;<&sol;p>&NewLine;<p><img class&equals;"alignnone size-full wp-image-1237" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2019&sol;09&sol;Screenshot-2019-09-19-18&period;04&period;57&period;png" alt&equals;"Screenshot 2019-09-19 18&period;04&period;57" width&equals;"510" height&equals;"198" &sol;><&sol;p>&NewLine;<p><strong>6<&sol;strong>&period;To set adapter in viewPager inside <span style&equals;"color&colon; &num;008000&semi;"><strong>MainActivity<&sol;strong><&sol;span> we will create a new class <span style&equals;"color&colon; &num;0000ff&semi;"><strong>MyPagerAdapter<&sol;strong><&sol;span> which extends <span style&equals;"color&colon; &num;008000&semi;"><strong>PagerAdapter<&sol;strong><&sol;span> and also don&&num;8217&semi;t forget to override the methods which we have discussed above &colon;<&sol;p>&NewLine;<pre>private class MyPagerAdapter extends PagerAdapter &lbrace;&NewLine; private int&lbrack;&rsqb; images&semi;&NewLine; private String&lbrack;&rsqb; alphabets&semi;&NewLine; int&lbrack;&rsqb; songs&semi;&NewLine;&NewLine;&NewLine; private MyPagerAdapter&lpar;&rpar; &lbrace;&NewLine; this&period;images &equals; new int&lbrack;&rsqb;&lbrace;R&period;drawable&period;a&lowbar;img&comma; R&period;drawable&period;b&lowbar;img&comma; R&period;drawable&period;c&lowbar;img&comma; R&period;drawable&period;d&lowbar;img&rcub;&semi;&NewLine; this&period;alphabets &equals; new String&lbrack;&rsqb;&lbrace;"A for Apple"&comma; "B for Ball"&comma; "C for cat"&comma; "D for Dog"&rcub;&semi;&NewLine; this&period;songs &equals; new int&lbrack;&rsqb;&lbrace;R&period;raw&period;wheels&comma; R&period;raw&period;twinkle&comma; R&period;raw&period;mary&comma; R&period;raw&period;london&rcub;&semi;&NewLine;&NewLine; &rcub;&NewLine;&NewLine; public int getCount&lpar;&rpar; &lbrace;&NewLine;&NewLine; return this&period;images&period;length&semi;&NewLine; &rcub;&NewLine;&NewLine; public boolean isViewFromObject&lpar;View view&comma; Object object&rpar; &lbrace;&NewLine; return view &equals;&equals; &lpar;object&rpar;&semi;&NewLine; &rcub;&NewLine;&NewLine; public Object instantiateItem&lpar;ViewGroup container&comma; int position&rpar; &lbrace;&NewLine;&NewLine;&NewLine; View view &equals; &lpar;&lpar;LayoutInflater&rpar; getApplicationContext&lpar;&rpar;&period;getSystemService&lpar;Context&period;LAYOUT&lowbar;INFLATER&lowbar;SERVICE&rpar;&rpar;&period;inflate&lpar;R&period;layout&period;content&comma; container&comma; false&rpar;&semi;&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">&sol;&sol;setting text in textview<&sol;span><&sol;strong>&NewLine; &lpar;&lpar;TextView&rpar; view&period;findViewById&lpar;R&period;id&period;textview&rpar;&rpar;&period;setText&lpar;this&period;alphabets&lbrack;position&rsqb;&rpar;&semi;&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">&sol;&sol;setting image in imageview<&sol;span><&sol;strong>&NewLine; ImageView imageView &equals; view&period;findViewById&lpar;R&period;id&period;imageview&rpar;&semi;&NewLine; imageView&period;setScaleType&lpar;ImageView&period;ScaleType&period;FIT&lowbar;CENTER&rpar;&semi;&NewLine; imageView&period;setImageResource&lpar;this&period;images&lbrack;position&rsqb;&rpar;&semi;&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">&sol;&sol;play and stop song on button click<&sol;span><&sol;strong>&NewLine; Button btn&lowbar;play &equals; view&period;findViewById&lpar;R&period;id&period;btn&lowbar;play&rpar;&semi;&NewLine; Button btn&lowbar;stop &equals; view&period;findViewById&lpar;R&period;id&period;btn&lowbar;stop&rpar;&semi;&NewLine;&NewLine;&NewLine; final int song &equals; songs&lbrack;position&rsqb;&semi;&NewLine;&NewLine; btn&lowbar;play&period;setOnClickListener&lpar;new View&period;OnClickListener&lpar;&rpar; &lbrace;&NewLine;&NewLine; public void onClick&lpar;View v&rpar; &lbrace;&NewLine; try &lbrace;&NewLine;&NewLine; if &lpar;mp &excl;&equals; null &amp&semi;&amp&semi; mp&period;isPlaying&lpar;&rpar;&rpar; &lbrace;&NewLine; mp&period;stop&lpar;&rpar;&semi;&NewLine; mp&period;release&lpar;&rpar;&semi;&NewLine;&NewLine; &rcub;&NewLine; mp &equals; MediaPlayer&period;create&lpar;getApplicationContext&lpar;&rpar;&comma; song&rpar;&semi;&NewLine; mp&period;start&lpar;&rpar;&semi;&NewLine; &rcub; catch &lpar;Exception e&rpar; &lbrace;&NewLine; e&period;printStackTrace&lpar;&rpar;&semi;&NewLine; &rcub;&NewLine;&NewLine;&NewLine; &rcub;&NewLine; &rcub;&rpar;&semi;&NewLine;&NewLine; btn&lowbar;stop&period;setOnClickListener&lpar;new View&period;OnClickListener&lpar;&rpar; &lbrace;&NewLine;&NewLine; public void onClick&lpar;View v&rpar; &lbrace;&NewLine; mp&period;stop&lpar;&rpar;&semi;&NewLine; mp&period;release&lpar;&rpar;&semi;&NewLine; mp &equals; MediaPlayer&period;create&lpar;getApplicationContext&lpar;&rpar;&comma; song&rpar;&semi;&NewLine; &rcub;&NewLine; &rcub;&rpar;&semi;&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">&sol;&sol;adding view in container i&period;e viewpager<&sol;span><&sol;strong>&NewLine; container&period;addView&lpar;view&rpar;&semi;&NewLine;&NewLine; return view&semi;&NewLine;&NewLine; &rcub;&NewLine;&NewLine; public void destroyItem&lpar;ViewGroup container&comma; int position&comma; Object object&rpar; &lbrace;&NewLine;&NewLine; container&period;removeView&lpar;&lpar;View&rpar; object&rpar;&semi;&NewLine;&NewLine; &rcub;&NewLine;&rcub;<&sol;pre>&NewLine;<p><strong>7<&sol;strong>&period;To viewPager add  <span style&equals;"color&colon; &num;0000ff&semi;"><strong>addOnPageChangeListener<&sol;strong><&sol;span>  that will be invoked whenever the page changes or we can say whenever you scrolled page&period;<&sol;p>&NewLine;<pre>viewPager&period;addOnPageChangeListener&lpar;new ViewPager&period;OnPageChangeListener&lpar;&rpar; &lbrace;&NewLine; &commat;Override&NewLine; public void onPageScrolled&lpar;int position&comma; float positionOffset&comma; int positionOffsetPixels&rpar; &lbrace;&NewLine; if &lpar;mp &excl;&equals; null&rpar; &lbrace;&NewLine; mp&period;stop&lpar;&rpar;&semi;&NewLine; mp&period;release&lpar;&rpar;&semi;&NewLine; mp &equals; null&semi;&NewLine; &rcub; else return&semi;&NewLine;&NewLine; &rcub;&NewLine;&NewLine; &commat;Override&NewLine; public void onPageSelected&lpar;int position&rpar; &lbrace;&NewLine;&NewLine; &rcub;&NewLine;&NewLine; &commat;Override&NewLine; public void onPageScrollStateChanged&lpar;int state&rpar; &lbrace;&NewLine;&NewLine; &rcub;&NewLine;&rcub;&rpar;&semi;<&sol;pre>&NewLine;<p><strong>8<&sol;strong>&period;Open <span style&equals;"color&colon; &num;008000&semi;"><strong>MainActivity&period;java<&sol;strong><&sol;span> and pass <span style&equals;"color&colon; &num;0000ff&semi;"><strong>MyPagerAdapter<&sol;strong><&sol;span> object as an argument while setting adapter to viewPager&period;<&sol;p>&NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>MainActivity&period;java<&sol;strong><&sol;span><&sol;p>&NewLine;<pre>package trendlife&period;testapp&semi;&NewLine;&NewLine;import android&period;content&period;Context&semi;&NewLine;import android&period;media&period;MediaPlayer&semi;&NewLine;import android&period;os&period;Bundle&semi;&NewLine;import android&period;view&period;LayoutInflater&semi;&NewLine;import android&period;view&period;View&semi;&NewLine;import android&period;view&period;ViewGroup&semi;&NewLine;import android&period;widget&period;Button&semi;&NewLine;import android&period;widget&period;ImageView&semi;&NewLine;import android&period;widget&period;TextView&semi;&NewLine;&NewLine;import androidx&period;appcompat&period;app&period;AppCompatActivity&semi;&NewLine;import androidx&period;viewpager&period;widget&period;PagerAdapter&semi;&NewLine;import androidx&period;viewpager&period;widget&period;ViewPager&semi;&NewLine;&NewLine;public class MainActivity extends AppCompatActivity &lbrace;&NewLine;&NewLine; private ViewPager viewPager&semi;&NewLine;&NewLine; MediaPlayer mp&semi;&NewLine;&NewLine; &commat;Override&NewLine; protected void onCreate&lpar;Bundle savedInstanceState&rpar; &lbrace;&NewLine; super&period;onCreate&lpar;savedInstanceState&rpar;&semi;&NewLine; setContentView&lpar;R&period;layout&period;activity&lowbar;main&rpar;&semi;&NewLine;&NewLine;&NewLine; viewPager &equals; findViewById&lpar;R&period;id&period;viewpager&rpar;&semi;&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">&sol;&sol;setting adapter in viewpager<&sol;span><&sol;strong>&NewLine; viewPager&period;setAdapter&lpar;new MyPagerAdapter&lpar;&rpar;&rpar;&semi;&NewLine;&NewLine; viewPager&period;addOnPageChangeListener&lpar;new ViewPager&period;OnPageChangeListener&lpar;&rpar; &lbrace;&NewLine; &commat;Override&NewLine; public void onPageScrolled&lpar;int position&comma; float positionOffset&comma; int positionOffsetPixels&rpar; &lbrace;&NewLine; if &lpar;mp &excl;&equals; null&rpar; &lbrace;&NewLine; mp&period;stop&lpar;&rpar;&semi;&NewLine; mp&period;release&lpar;&rpar;&semi;&NewLine; mp &equals; null&semi;&NewLine; &rcub; else return&semi;&NewLine;&NewLine; &rcub;&NewLine;&NewLine; &commat;Override&NewLine; public void onPageSelected&lpar;int position&rpar; &lbrace;&NewLine;&NewLine; &rcub;&NewLine;&NewLine; &commat;Override&NewLine; public void onPageScrollStateChanged&lpar;int state&rpar; &lbrace;&NewLine;&NewLine; &rcub;&NewLine; &rcub;&rpar;&semi;&NewLine;&NewLine; &rcub;&NewLine;&NewLine; private class MyPagerAdapter extends PagerAdapter &lbrace;&NewLine; private int&lbrack;&rsqb; images&semi;&NewLine; private String&lbrack;&rsqb; alphabets&semi;&NewLine; int&lbrack;&rsqb; songs&semi;&NewLine;&NewLine;&NewLine; private MyPagerAdapter&lpar;&rpar; &lbrace;&NewLine; this&period;images &equals; new int&lbrack;&rsqb;&lbrace;R&period;drawable&period;a&lowbar;img&comma; R&period;drawable&period;b&lowbar;img&comma; R&period;drawable&period;c&lowbar;img&comma; R&period;drawable&period;d&lowbar;img&rcub;&semi;&NewLine; this&period;alphabets &equals; new String&lbrack;&rsqb;&lbrace;"A for Apple"&comma; "B for Ball"&comma; "C for cat"&comma; "D for Dog"&rcub;&semi;&NewLine; this&period;songs &equals; new int&lbrack;&rsqb;&lbrace;R&period;raw&period;wheels&comma; R&period;raw&period;twinkle&comma; R&period;raw&period;mary&comma; R&period;raw&period;london&rcub;&semi;&NewLine;&NewLine; &rcub;&NewLine;&NewLine; public int getCount&lpar;&rpar; &lbrace;&NewLine;&NewLine; return this&period;images&period;length&semi;&NewLine; &rcub;&NewLine;&NewLine; public boolean isViewFromObject&lpar;View view&comma; Object object&rpar; &lbrace;&NewLine; return view &equals;&equals; &lpar;object&rpar;&semi;&NewLine; &rcub;&NewLine;&NewLine; public Object instantiateItem&lpar;ViewGroup container&comma; int position&rpar; &lbrace;&NewLine;&NewLine;&NewLine; View view &equals; &lpar;&lpar;LayoutInflater&rpar; getApplicationContext&lpar;&rpar;&period;getSystemService&lpar;Context&period;LAYOUT&lowbar;INFLATER&lowbar;SERVICE&rpar;&rpar;&period;inflate&lpar;R&period;layout&period;content&comma; container&comma; false&rpar;&semi;&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">&sol;&sol;setting text in textview<&sol;span><&sol;strong>&NewLine; &lpar;&lpar;TextView&rpar; view&period;findViewById&lpar;R&period;id&period;textview&rpar;&rpar;&period;setText&lpar;this&period;alphabets&lbrack;position&rsqb;&rpar;&semi;&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">&sol;&sol;setting image in imageview<&sol;span><&sol;strong>&NewLine; ImageView imageView &equals; view&period;findViewById&lpar;R&period;id&period;imageview&rpar;&semi;&NewLine; imageView&period;setScaleType&lpar;ImageView&period;ScaleType&period;FIT&lowbar;CENTER&rpar;&semi;&NewLine; imageView&period;setImageResource&lpar;this&period;images&lbrack;position&rsqb;&rpar;&semi;&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">&sol;&sol;play and stop song on button click<&sol;span><&sol;strong>&NewLine; Button btn&lowbar;play &equals; view&period;findViewById&lpar;R&period;id&period;btn&lowbar;play&rpar;&semi;&NewLine; Button btn&lowbar;stop &equals; view&period;findViewById&lpar;R&period;id&period;btn&lowbar;stop&rpar;&semi;&NewLine;&NewLine;&NewLine; final int song &equals; songs&lbrack;position&rsqb;&semi;&NewLine;&NewLine; btn&lowbar;play&period;setOnClickListener&lpar;new View&period;OnClickListener&lpar;&rpar; &lbrace;&NewLine;&NewLine; public void onClick&lpar;View v&rpar; &lbrace;&NewLine; try &lbrace;&NewLine;&NewLine; if &lpar;mp &excl;&equals; null &amp&semi;&amp&semi; mp&period;isPlaying&lpar;&rpar;&rpar; &lbrace;&NewLine; mp&period;stop&lpar;&rpar;&semi;&NewLine; mp&period;release&lpar;&rpar;&semi;&NewLine;&NewLine; &rcub;&NewLine; mp &equals; MediaPlayer&period;create&lpar;getApplicationContext&lpar;&rpar;&comma; song&rpar;&semi;&NewLine; mp&period;start&lpar;&rpar;&semi;&NewLine; &rcub; catch &lpar;Exception e&rpar; &lbrace;&NewLine; e&period;printStackTrace&lpar;&rpar;&semi;&NewLine; &rcub;&NewLine;&NewLine;&NewLine; &rcub;&NewLine; &rcub;&rpar;&semi;&NewLine;&NewLine; btn&lowbar;stop&period;setOnClickListener&lpar;new View&period;OnClickListener&lpar;&rpar; &lbrace;&NewLine;&NewLine; public void onClick&lpar;View v&rpar; &lbrace;&NewLine; mp&period;stop&lpar;&rpar;&semi;&NewLine; mp&period;release&lpar;&rpar;&semi;&NewLine; mp &equals; MediaPlayer&period;create&lpar;getApplicationContext&lpar;&rpar;&comma; song&rpar;&semi;&NewLine; &rcub;&NewLine; &rcub;&rpar;&semi;&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;0000ff&semi;">&sol;&sol;setting view in container i&period;e viewpager<&sol;span><&sol;strong>&NewLine; container&period;addView&lpar;view&rpar;&semi;&NewLine;&NewLine; return view&semi;&NewLine;&NewLine; &rcub;&NewLine;&NewLine; public void destroyItem&lpar;ViewGroup container&comma; int position&comma; Object object&rpar; &lbrace;&NewLine;&NewLine; container&period;removeView&lpar;&lpar;View&rpar; object&rpar;&semi;&NewLine;&NewLine; &rcub;&NewLine; &rcub;&NewLine;&NewLine;&rcub;<&sol;pre>&NewLine;<p>When you run the application it will look like this&colon;<&sol;p>&NewLine;<p><img class&equals;"alignnone wp-image-1238" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2019&sol;09&sol;Screenshot&lowbar;1568902634-576x1024&period;png" alt&equals;"Screenshot&lowbar;1568902634" width&equals;"244" height&equals;"434" &sol;>              <img class&equals;"alignnone wp-image-1239" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2019&sol;09&sol;Screenshot&lowbar;1568902644&period;png" alt&equals;"Screenshot&lowbar;1568902644" width&equals;"243" height&equals;"432" &sol;><&sol;p>&NewLine;<p>&nbsp&semi;<&sol;p>&NewLine;&NewLine;

Exit mobile version