2014-01-20 37 views
-1

我正在学习android开发,因为看完教程后我创建了这个应用程序,其中图像使用viewpager滑动。但是现在,如果我想在每个图像上播放不同的声音?这是否有可能?这是我的代码第一个声音没有播放ViewPager直到滑动页面

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; 
    } 

} 

回答

0

我会建议你让你Activity或您的Adapter实现ViewPager.OnPageChangeListener接口。

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

看一看界面的方法和实现你的“声音”在那里。

@Override 
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

} 

@Override 
public void onPageSelected(int position) { 

} 

@Override 
public void onPageScrollStateChanged(int state) { 

} 
+0

你能告诉我工作示例代码为 –

+0

这与代码:) 的例子特别是你想在除了知道些什么? –

+0

看到我试图做到这一点。看到我刚刚过了我的代码。现在它正在工作,但是,但是我已经设置onPageChangeListener所以当页面更改时声音来了,但它仍然在第一页ofcourse静音,应用程序加载时没有页面更改。但我想从第一个图像播放声音.. –

0

SuRaj Prince,逆序调用它应该工作,所以首先设置ChangeListener,然后调用setCurrentItem。

此外,如果您只播放短音,请使用SoundPool而不是MediaPlayer。

+0

不,它仍然是一个问题。我想从一开始就播放声音,但它不是首先播放声音休息都很好 –

0

我想这个代码工作正常,现在

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; 
    } 

}