gpt4 book ai didi

android - 在Viewpager上播放声音

转载 作者:行者123 更新时间:2023-12-03 02:14:20 26 4
gpt4 key购买 nike

我做了这个程序。这里使用viewpager来滑动和播放与图像匹配的声音。现在它可以正常工作,但是唯一的问题是首页图像上没有声音,因为启动时页面没有滑动。我该如何解决这个问题?..这是我的代码

public class Learning_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.setAdapter(adapter);
myPager.setOnPageChangeListener(player);
myPager.setCurrentItem(0);
BG = MediaPlayer.create(this, R.raw.jingle);
BG.setLooping(true);
BG.setVolume(100, 100);
BG.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};

OnPageChangeListener player = new OnPageChangeListener()
{

@Override
public void onPageSelected(int arg0)
{
mp = MediaPlayer.create(Learning_Numbers.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;
}

}

此处mp用于图像滑动声音,而BG用于背景声音。

最佳答案

查看viewpager的源代码。

void setCurrentItemInternal(int item, boolean smoothScroll, boolean always, int velocity)     {
...
if (mFirstLayout) {
// We don't have any idea how big we are yet and shouldn't have any pages either.
// Just set things up and let the pending layout handle things.
mCurItem = item;
if (dispatchSelected && mOnPageChangeListener != null) {
mOnPageChangeListener.onPageSelected(item);
}
if (dispatchSelected && mInternalPageChangeListener != null) {
mInternalPageChangeListener.onPageSelected(item);
}
requestLayout();
...

// in setAdapter(), It will call setCurrentItemInternal() ..

因此,只需setOnPageChangeListener(player);在setAdapter之前。它可能会按预期工作。方便的把戏

关于android - 在Viewpager上播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21249743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com