0
votes

Comment séparer la disposition Android pour la télévision et le téléphone / tablette?

J'ai une application Android qui fonctionne sur téléphone / tablette. Je veux ajouter du support pour Android TV.

La documentation officielle indique de créer une activité distincte pour la télévision.

Seule la différence entre téléphone et télévision est la couche de présentation (c'est-à-dire une vue), donc je ne devrais donc avoir à créer de nouvelles mises en page, et non au contrôleur.

J'ai créé des mises en page qui fonctionnent pour la télévision et utilisez le même contrôleur. Le problème est que je ne peux pas spécifier quelles mises en page sont pour la télévision et lesquelles sont pour les téléphones / tablettes.

Je ne peux pas faire d'hypothèses sur la taille de l'écran et le type de périphérique. Certains téléphones ont une résolution d'écran supérieure à celle des téléviseurs et inversement.

Comment puis-je fournir des mises en page différentes pour le téléphone et la télévision?

S'il y a une meilleure façon de le faire sans écrire (ou copier) mon code Java existant, j'accepterais cela aussi.


0 commentaires

3 Réponses :


5
votes

Comment puis-je fournir des mises en page différentes pour le téléphone et la télévision?

S'il s'agit d'un environnement télévisé officiel Android, AFAIK RES / Layout-Télévision / devrait fonctionner. Voir le légendaire Tableau 2 .


2 commentaires

Qu'en est-il du mode UI dans les ressources Android?


Impressionnant! J'ai créé la mise en page, la mise en page et la mise en page-lame-télévision avec des mises en page différentes. Layout-Land est utilisé sur le téléphone / la tablette, la mise en page-terre à la télévision sur une télévision. Idem pour les styles. Fonctionne très bien! Merci!



0
votes

Vous pouvez utiliser ce chèque booléen pour se si vous êtes sur un téléviseur:

    context.getPackageManager().hasSystemFeature("com.google.android.tv")


0 commentaires

1
votes

Un moyen plus fiable d'identifier s'il s'agit d'une télévision ou d'un téléphone. Il peut même vérifier s'il s'agit de regarder, d'appareils ou d'autres périphériques.

UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE);
if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
    Log.d(TAG, "Running on a TV Device");
} else {
    Log.d(TAG, "Running on a non-TV Device");
}


0 commentaires