嗨我正在进行幻灯片放映。幻灯片自动幻灯片放映这些图像是存储在数组中的用户选择的图像。现在我想将用户选择的音频与动画一起制作。但我不知道该怎么做这个。图像动画工作正常但是canot在背景播放声音。这是我的代码
final Handler mHandler = new Handler();
// Create runnable for posting
final Runnable mUpdateResults = new Runnable() {
public void run() {
AnimateandSlideShow();
}
};
// mHandler.postDelayed(mUpdateResults, 300);
int delay =300; // delay for 1 sec.
int period = 9000; // repeat every 4 sec.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
mHandler.post(mUpdateResults);
}
}, delay, period);
////////end animation//////////////////
这里是animatedslideshow函数:
private void AnimateandSlideShow() {
// playsound();
// sound =new AnimationSound(SlideShow.this,uriaudio);
// sound.startsound();
iv=(ImageView)findViewById(R.id.anim_view);
iv.setImageURI(Uri.parse(allimgs.get(count%allimgs.size()).toString()));
count++;
anim = AnimationUtils.loadAnimation(SlideShow.this, R.anim.fade_in);
// load your desire animation.
iv.startAnimation(anim);
}
和playound:
private void playsound()
{
MediaPlayer player = MediaPlayer.create(SlideShow.this, uriaudio);
player.setLooping(false); // Set looping
player.setVolume(100,100);
player.start();
}
我不知道将playound函数放在处理程序中的哪个位置,以便音频以动画开头。
答案 0 :(得分:1)
你可以播放声音并在AnimationListener的方法中停止它,如下所示:
MediaPlayer player = MediaPlayer.create(SlideShow.this, uriaudio);
player.setLooping(false); // Set looping
player.setVolume(100,100);
final int mPlayerLength = 0;
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
player.seekTo(mPlayerLength);
player.start();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
if(player.isPlaying()){
player.stop();
mPlayerLength = player.getCurrentPosition();
}
}
};
希望它有所帮助。
修改强>
是的,final
修饰符不允许您稍后更改。对不起。我没有运行代码。以下是替代方案:您可以在活动中实施AnimationListener
。因此,您不需要将变量保留为final,以便在方法中访问它:
public class MyActivity extends Activity implements AnimationListener{
int mPlayerLength = 0; //global variable
anim.setAnimationListener(this);
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
player.seekTo(mPlayerLength);
player.start();
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
if(player.isPlaying()){
player.stop();
mPlayerLength = player.getCurrentPosition();
}
}
}
希望这是明确的并解决问题:)