В MediaController есть две основные проблемы:
- автоматическое скрытие равно 3 с по умолчанию
- Нажатие на видео показывает / скрывает панель управления
Для первой части это легко исправить, изменив значение тайм-аута по умолчанию для начала на ноль (ноль означает неопределенный, он используется внутри при запуске видео) следующим образом:
mediaController = new MediaController(this){
@Override
public void show() {
super.show(0);//Default no auto hide timeout
}
};
Вторая проблема немного сложна, потому что обработчик кликов объявлен как закрытый и окончательный, поэтому у нас нет никакого контроля над этим.
Мое решение состоит в том, чтобы использовать другую функцию, чтобы установить видимость и отключить функцию скрытия следующим образом:
mediaController = new MediaController(this){
@Override
public void show() {
super.show(0);//Default no auto hide timeout
}
@Override
public void hide() {
//DOES NOTHING
}
void setVisible(boolean visible){//USE THIS FUNCTION INSTEAD
if(visible)
super.show();
else
super.hide();
}
};
Вы также можете добавить переменную для повторного включения стандартной функциональности, если для видимости установлено значение false, например:
mediaController = new MediaController(this){
private boolean forceVisible=false;
@Override
public void show() {
super.show(0);//Default no auto hide timeout
}
@Override
public void hide() {
if(!forceVisible)super.hide();
}
void setVisible(boolean visible){
forceVisible=visible;
if(visible)
super.show();
else
super.hide();
}
};