Changez le style de MediaController Android

Existe-t-il un moyen de personnaliser MediaController? Je dois changer le style des boutons, SeekBar etc.

  • La caméra frontale prend une capture très sombre dans Android
  • Xamarin build action warning XA0101
  • Console de développeur Android - mauvaise empreinte digitale après la création de version avec Android Studio
  • L'animation TextInputLayout chevauche le texte lorsque le texte est défini par programme
  • Comment utiliser Kotlin coroutines attend () sur le fil principal
  • Afficher le dialogue avec une animation qui croît d'un point
  • Comment démarrer automatiquement le service dans Android?
  • Comment lancer des applications Android dans mon application dans Android?
  • BroadcastReceiver ou Messenger via Handler
  • Comment modifier la couleur de fond d'un bitmap transparent enregistré
  • Long-polling vs Apple Push Notification Service et Android C2DM
  • LibGDX - Faites-vous glisser vers le haut ou faites-vous glisser vers la droite, etc.?
  • 3 Solutions collect form web for “Changez le style de MediaController Android”

    La méthode makeControllerView devait être remplacée afin que vous puissiez fournir votre propre vue. Malheureusement, il est caché en ce moment.

    Vous voudrez peut-être prendre la source de MediaController et ré-exécuter ou copier-et-coller les méthodes cachées dans une sous-classe afin que vous puissiez le personnaliser.

    Ce que vous pouvez faire, c'est de récupérer la hiérarchie de vue de votre MediaController et de définir le SeekBar de manière programmable par programme:

     private void styleMediaController(View view) { if (view instanceof MediaController) { MediaController v = (MediaController) view; for(int i = 0; i < v.getChildCount(); i++) { styleMediaController(v.getChildAt(i)); } } else if (view instanceof LinearLayout) { LinearLayout ll = (LinearLayout) view; for(int i = 0; i < ll.getChildCount(); i++) { styleMediaController(ll.getChildAt(i)); } } else if (view instanceof SeekBar) { ((SeekBar) view).setProgressDrawable(getResources().getDrawable(R.drawable.progressbar)); ((SeekBar) view).setThumb(getResources().getDrawable(R.drawable.progresshandle)); } } 

    Ensuite, appelez simplement

     styleMediaController(myMC); 

    J'ai changé le code de la réponse de bk138 pour simplement changer la couleur des éléments. Pas les drawables eux-mêmes. Cette solution est compatible avec les anciens périphériques avec la bibliothèque de support v4.

     private void styleMediaController(View view) { if (view instanceof MediaController) { MediaController v = (MediaController) view; for (int i = 0; i < v.getChildCount(); i++) { styleMediaController(v.getChildAt(i)); } } else if (view instanceof LinearLayout) { LinearLayout ll = (LinearLayout) view; for (int i = 0; i < ll.getChildCount(); i++) { styleMediaController(ll.getChildAt(i)); } } else if (view instanceof SeekBar) { ((SeekBar) view) .getProgressDrawable() .mutate() .setColorFilter( getResources().getColor( R.color.MediaPlayerMeterColor), PorterDuff.Mode.SRC_IN); Drawable thumb = ((SeekBar) view).getThumb().mutate(); if (thumb instanceof android.support.v4.graphics.drawable.DrawableWrapper) { //compat mode, requires support library v4 ((android.support.v4.graphics.drawable.DrawableWrapper) thumb).setCompatTint(getResources() .getColor(R.color.MediaPlayerThumbColor)); } else { //lollipop devices thumb.setColorFilter( getResources().getColor(R.color.MediaPlayerThumbColor), PorterDuff.Mode.SRC_IN); } } } 

    Ensuite, appelez simplement

     styleMediaController(myMC); 

    Il styleMediaController(myMC) appeler styleMediaController(myMC) dans OnPreparedListener de VideoView pour le faire fonctionner. Sinon, la vue MediaController n'a pas d'enfants.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.