我有一個videoview,當視頻開始時,媒體控制器顯示3秒鐘。我想隱藏媒體控制器,除非我點擊屏幕。我試過android:隱藏媒體控制器功能
MediaController mc= new MediaController();
mc.hide();
Videoview.setMediaController(mc);
..
..
..
但它沒有工作..有什麼建議嗎?
我有一個videoview,當視頻開始時,媒體控制器顯示3秒鐘。我想隱藏媒體控制器,除非我點擊屏幕。我試過android:隱藏媒體控制器功能
MediaController mc= new MediaController();
mc.hide();
Videoview.setMediaController(mc);
..
..
..
但它沒有工作..有什麼建議嗎?
這是不是真的要隱藏的MediaController一個解決方案,但如果你想擺脫的東西乾脆,這樣做:
videoView.setMediaController(null);
你可以把它最初是由做上述隱藏,然後當你想要顯示(onClick或onTouch或其他)時,只需製作一個新的MediaController並將其設置在videoView上即可。我添加了一個布爾值來防止該動作發生一次以上。
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (controllerCreated == false) {
videoView.setMediaController(mc);
mc.show();
controllerCreated = true;
}
return true;
} else {
return false;
}
}
將其設置爲null是IMO – Ronnie
設置videoView.setMediaController(null)的最佳方式;可能會導致NEC媒體(日本的Android手機)崩潰,所以你可能希望謹慎行事,一定要測試 –
指定videoView.setMediaController(null)
沒有必要。
問題是你不能隱藏控制器,直到它完全準備好。
使用OnPreparedListener並在回調onPrepared做你的隱藏inderectly,如:
@Override
public void onPrepared (MediaPlayer mp)
{
int childs = mediaController.getChildCount();
for (int i = 0; i < childs; i++)
{
View child = mediaController.getChildAt (i);
child.setVisibility (View.GONE);
}
}
不幸的是,這是VideoView
硬編碼的行爲:
...
if (mTargetState == STATE_PLAYING) {
start();
if (mMediaController != null) {
mMediaController.show();
}
...
作爲一種變通方法,在包裹MediaController
您自己的類和壓制最初show()
調用,如下所示:
package pkg.your;
import android.content.Context;
import android.widget.MediaController;
public class MyMediaController extends MediaController {
private boolean suppressed = true;
public MyMediaController(Context context) {
super(context);
}
@Override
public void show(int timeout) {
if (! suppressed) {
super.show(timeout);
}
suppressed = false;
}
}
然後,只需聯播的MyMediaController
上述像往常一樣,例如:
MyMediaController mc = mediaController = new MyMediaController(this);
mc.setAnchorView(videoView);
mc.setMediaPlayer(videoView);
videoView.setMediaController(mc);
....
現在,控制最初隱藏,並且顯示在預期,當用戶點擊屏幕。
你有沒有想過? – sinek