ViewPager Swipe Previous Sound
Here i am using viewpager to swipe my images & it plays different sound on each image swipe. Now Its working fine but when i swipe back the sound does not match the image... My
Solution 1:
Move your MediaPlayer
object and code for playing the sound to onPageChangeListener
of your ViewPager
object. Currently it is playing audio only when the items are instantiated.
If you move them to onPageChangeListener
it will play on each page change irrespective of if a new item is instantiated or not.
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_numbers);
ViewPager viewPager = (ViewPager)findViewById(R.id.view_pager);
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
viewPager.setOnPageChangeListener(player);
player = MediaPlayer.create(this, R.raw.jingle);
player.setLooping(true);
player.setVolume(100, 100);
player.start();
}
OnPageChangeListener player = new OnPageChangeListener()
{
@Override
public void onPageSelected(int arg0)
{
mp = MediaPlayer.create(Numbers.this, mAudio[arg0]);
mp.start();
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2)
{
}
@Override
public void onPageScrollStateChanged(int arg0)
{
}
};
Solution 2:
I found my answer. Now this is the code which definitely work
public class Numbers extends Activity {
MediaPlayer mp;
MediaPlayer BG;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_numbers);
ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra);
ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
myPager.setOnPageChangeListener(player);
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
BG = MediaPlayer.create(this, R.raw.jingle);
BG.setLooping(true);
BG.setVolume(100, 100);
BG.start();
mp = MediaPlayer.create(Numbers.this, mAudio[0]);
mp.start();
}
@Override
protected void onPause() {
super.onPause();
BG.pause();
}
@Override
protected void onResume() {
super.onResume();
BG.start();
}
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};
public OnPageChangeListener player = new OnPageChangeListener()
{
@Override
public void onPageSelected(int arg1)
{
mp = MediaPlayer.create(Numbers.this, mAudio[arg1]);
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.numbers, menu);
return true;
}
}
Solution 3:
It has worked for me
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_farm_animals);
ButterKnife.bind(this);
farmAnimalAdapter = new FarmAnimalAdapter(this);
viewPager.setOnPageChangeListener(players);
viewPager.setAdapter(farmAnimalAdapter);
}
public int[] animal_images = new int[]{
R.drawable.cow,
R.drawable.sheep,
R.drawable.horse,
R.drawable.goat
};
public int[] animal_sound = new int[]{
R.raw.cow,
R.raw.sheep,
R.raw.horse,
R.raw.goat
};
public String[] names = new String[] {
"COW","SHEEP","HORSE","GOAT"
};
ViewPager.OnPageChangeListener players= new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
//audio
MediaPlayer sound = MediaPlayer.create(getApplicationContext(),animal_sound[i]);
sound.start();
}
@Override
public void onPageScrollStateChanged(int i) {
}
};` public class FarmAnimalAdapter extends PagerAdapter{
Context mContext;
LayoutInflater mLayoutInflater;
public FarmAnimalAdapter(Context mContext) {
this.mContext = mContext;
this.mLayoutInflater = mLayoutInflater;
}
@Override
public int getCount() {
return names.length ;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
mLayoutInflater =(LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
View view = mLayoutInflater.inflate(R.layout.farmanimal_adapter_list,container,false);
ImageView txtimage = (ImageView)view.findViewById(R.id.txtimage);
AppCompatTextView txtname = (AppCompatTextView)view.findViewById(R.id.txtname);
txtimage.setImageResource(animal_images[position]);
txtname.setText(names[position]);
container.addView(view);
return view;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((RelativeLayout)object);
}
}
`
`
Post a Comment for "ViewPager Swipe Previous Sound"