2010-10-08 6 views
3

J'essaie de personnaliser le thème de Media Volume Controller (je ne sais pas comment ça s'appelle, juste essayer de le nommer). C'est quelque chose comme un Toast avec le titre "Media Volume" qui apparaît quand on appuie sur les boutons de volume (+ et -) dans les jeux. Mais je ne sais pas quel View c'est, ou c'est un Toast, un Dialog. Pour autant que j'essaie, je n'ai rien trouvé qui le rapporte. Activity.setVolumeControlStream (AudioManager.STREAM_MUSIC) Pour l'activer dans votre activité, et rien de plus> _ < Si quelqu'un sait comment le personnaliser, ou simplement son nom, aidez-moi s'il vous plaît! Merci.Thème personnalisé pour Media Volume Controller (quel qu'il soit) d'Android?

Répondre

7

Désolé pour mon malentendu de votre question.

Je pense que la façon dont vous pouvez personnaliser "Media Volume Controller" est le volume de contrôle vous-même et affichez votre vue personnalisée (ou Toast). Parce que le "Media Volume" Toast (C'est un Toast, voir le code source de VolumePanel.onShowVolumeChanged) est créé et montré par le système Android que vous ne pouvez pas personnaliser.

Voici l'exemple de code qui pourrait résoudre votre problème:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { 
     // Or use adjustStreamVolume method. 
     am.adjustVolume(AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND); 
     Toast.makeText(this, "Volume up", Toast.LENGTH_SHORT).show(); 
     return false; 
    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { 
     // Or use adjustStreamVolume method. 
     am.adjustVolume(AudioManager.ADJUST_LOWER, AudioManager.FLAG_PLAY_SOUND); 
     Toast.makeText(this, "Volume down", Toast.LENGTH_SHORT).show(); 
     return false; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

Merci encore pour votre aide. Je vais essayer votre suggestion. Vraiment désolé je suis nouveau sur Stackflow, donc je ne peux pas voter pour vous. –

+0

Vous êtes les bienvenus. Je suis nouveau à Stackoverflow aussi. :) – Tony

0

Vous pouvez remplacer le onKeyDown de votre activité de jeu. Et montrez le "Toast" en fonction de la touche que vous venez de presser. onKeyDown méthode sera appelée quand une touche a été enfoncée dans votre activité. Voici l'exemple de code:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { 
     // show volumn up toast 
    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { 
     // show volumn down toast 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

Merci pour votre aide. J'ai aussi pensé à cela, mais Media Volume Controller n'est pas Toast, parce que s'il est affiché et que vous appuyez sur le bouton de volume, il ne réapparaîtra pas mais changera la barre de volume (un Toast disparaîtra puis réapparaîtra après quelques secondes). Et il est placé en haut de l'écran, pas le fond comme Toast. Arghh, j'aurais aimé savoir à quelle classe ça appartenait> _ < –

+0

Anh Tuan, je pense que c'est un toast. Jetez un oeil à l'API Toast. Il existe des possibilités pour définir une vue personnalisée pour le Toast et vous pouvez changer le contenu du Toast pendant qu'il est affiché et vous pouvez également changer la position du Toast en utilisant la méthode setGravity(). – Ridcully

Questions connexes