现状:的MediaPlayer播放/ ListView中停止
我有了一对夫妇元素和这些元素的自定义列表视图的应用程序有一个播放按钮来播放相应的媒体。本身就很好。 我决定,停止播放剪辑可能是一个好主意,所以我为每个列表视图项目添加了一个“停止”按钮,但设置了GONE的可见性,直到播放某些东西。
代码:
ImageButton bplay = (ImageButton) itemView.findViewById(R.id.item_bplay);
bplay.setTag(currentClip.getFile());
bplay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finalItemView.findViewById(R.id.item_bplay).setVisibility(View.GONE);
finalItemView.findViewById(R.id.item_bstop).setVisibility(View.VISIBLE);
mp.release();
mp = MediaPlayer.create(getApplicationContext(), currentClip.getFile());
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
finalItemView.findViewById(R.id.item_bplay).setVisibility(View.VISIBLE);
finalItemView.findViewById(R.id.item_bstop).setVisibility(View.GONE);
}
});
}
});
ImageButton bstop = (ImageButton) itemView.findViewById(R.id.item_bstop);
bstop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mp.release();
finalItemView.findViewById(R.id.item_bplay).setVisibility(View.VISIBLE);
finalItemView.findViewById(R.id.item_bstop).setVisibility(View.GONE);
}
});
描述:
这工作得很好,只要用户集中于只有一个剪辑。播放按钮被替换为停止按钮,停止按钮停止剪辑,或者如果让剪辑用完,按钮也会切换回来。
问题:
如果用户决定通过点击列表中的第二个元素上播放播放中断,第一个将卡住了停止按钮。由于停止按钮只是执行mp.release(),因此第一个元素的停止按钮现在能够停止播放第二个剪辑。 因为这一切都发生在一个列表视图中,当第二个项目被点击时,我不再有权访问第一个来重新替换按钮。 我寻找一种方法来捕获中断(很像mp.setOnCompletionListener寻找成功完成)并重置按钮,但到目前为止,我无法提出任何事情。 我其实喜欢这样一个事实,通过先放置发布,然后创建一个新的mediaplayer然后启动它,用户可以通过在另一个剪辑上按下Play来快速切换剪辑。我只想让原始剪辑上的“停止”按钮消失,一旦新剪辑启动。
问题:
- 我怎么赶,当用户决定切换到另一个剪辑没有停止的第一个?
- 我的切换按钮的方法是否有意义?有更好的选择吗?
谢谢您的回复。我会仔细看看的。 –