как создать собственный пользовательский интерфейс для Android MediaController

Я хочу настроить элементы управления в MediaController для своего видеоплеера. Я хочу поменять изображение для кнопки воспроизведения, изменить скин, изменить цвет и т. Д.

Есть ли известный способ сделать это?

Спасибо


person user1681001    schedule 18.09.2012    source источник
comment
Что вы сделали до сих пор? Вы пробовали что-то кодировать? Добавьте образец кода.   -  person Michaël    schedule 18.09.2012
comment
stackoverflow.com/questions/2044000/ предлагает хорошее решение для изменения существующих элементов   -  person OneWorld    schedule 23.03.2016


Ответы (2)


У меня была такая же проблема в недавнем проекте, и в итоге я создал собственную реализацию на основе стандартного MediaController. Он добавляет полноэкранную кнопку в крайнем правом углу, но даже если это не то, что вам нужно, этот класс должен стать хорошей отправной точкой.

Код:

Ресурсы изображений:

  • введите здесь описание изображения
  • http://imgur.com/JYJGN
  • http://imgur.com/R0txq
  • http://imgur.com/dQ6wA

Гочки:

  • Класс предполагает, что представление привязки представляет собой FrameLayout, чтобы расположить себя внизу.
  • Класс не использует Window, чтобы гарантировать, что элемент управления плавает поверх привязки. Однако для меня это не было проблемой, так как метод show() каждый раз выполняет mAnchor.addView().
  • Класс использует собственный протокол MediaPlayerControl. Это позволяет выполнять такие настройки, как toggleFullScreen().

ОБНОВЛЕНИЕ (2013 г.). Дополнительные сведения см. в этом руководстве: http://www.brightec.co.uk/blog/custom-android-media-controller

ОБНОВЛЕНИЕ (2018 г.): теперь вы можете использовать замечательный ExoPlayer и полностью настроить пользовательский интерфейс проигрывателя, просто переопределив файл макета.

person Blago    schedule 14.01.2013
comment
@Blago, у вас есть внутренний класс, содержащий WeakReference для внешнего класса. Это бесполезно и не делает то, что вы думаете, потому что внутренний класс — это просто синтаксический сахар для класса верхнего уровня, которому вы передаете ссылку на внешний класс в конструкторе. - person dcow; 04.10.2013
comment
Панель поиска не работает должным образом, когда пользователь ищет/перемещает ее вручную. В этом случае панель поиска перестает обновляться. - person Umer Farooq; 17.12.2014
comment
Да, но вы знаете, что этот проект не является полным, потому что работает некорректно (плохой assynk + плохой экземпляр для генерации), но это хороший пример для начала, спасибо. - person ; 01.03.2016
comment
кнопка полноэкранного режима не активна - person Trần Hoà; 01.06.2016

Я протестировал его, и он отлично работает на 4.4 kitkat, но, как сказал KAPLANDROID, черный экран появился на Android 2.3.6, но музыка и видеоконтроллер работают нормально,

Нашли решение, просто введите этот код

videoHolder.setType( SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS );

после этого

videoHolder.addCallback( this );

и ты готов идти

person hussamabd    schedule 14.02.2014