Search code examples
androidandroid-viewpager

First Sound not played on ViewPager until swipes the page


I am learning android development as after watching tutorials I have created this app where image is swiping using viewpager. But now if i want play different sound on each image swipe? Is it possible in this . This is my code

PageIndicatiorActivity

   package com.horizontalscrollviewwithpageindicator;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.media.MediaPlayer;

public class PageIndicatorActivity extends Activity {
    MediaPlayer mp;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra);
        ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(0);
        myPager.setOnPageChangeListener(player);
    }

    private int[] mAudio = new int[]{R.raw.one,R.raw.two,R.raw.three,R.raw.four,R.raw.five,R.raw.six,R.raw.seven,R.raw.eight,R.raw.nine,R.raw.ten};

    private int imageArra[] = { R.drawable.no1,R.drawable.no2,R.drawable.no3,R.drawable.no4,R.drawable.no5,R.drawable.no6,R.drawable.no7,R.drawable.no8,R.drawable.no9,R.drawable.no10};

 OnPageChangeListener player = new OnPageChangeListener()
    {

        @Override
        public void onPageSelected(int arg0)
        {
            mp = MediaPlayer.create(PageIndicatorActivity.this, mAudio[arg0]);
            mp.start();
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2)
        {
        }

        @Override
        public void onPageScrollStateChanged(int arg0)
        {
        }
    };

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

Solution

  • I would recommend that you let your Activity or your Adapter implement the ViewPager.OnPageChangeListener interface.

    http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html

    Have a look at the methods of the interface and implement your "sound" there.

     @Override
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
     }
    
     @Override
     public void onPageSelected(int position) {
    
     }
    
     @Override
     public void onPageScrollStateChanged(int state) {
    
     }