現狀:的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來快速切換剪輯。我只想讓原始剪輯上的「停止」按鈕消失,一旦新剪輯啓動。
問題:
- 我怎麼趕,當用戶決定切換到另一個剪輯沒有停止的第一個?
- 我的切換按鈕的方法是否有意義?有更好的選擇嗎?
謝謝您的回覆。我會仔細看看的。 –