2015-01-16 5 views
6

Um verschiedene Dimensionswerte für 1080p und 720p Android TV zu definieren, muss ich entscheiden, welchen Qualifier ich verwenden soll. Wenn ich versuche, etwas wie Werte-sw1080p, Werte-sw720p zu verwenden, funktioniert es nicht. Die Werte in dimes.xml beeinflussen nichts. Aber es funktioniert, wenn ich ein Qualifikationsmerkmal wie -sw540dp, -sw360dp verwende. Ich verstehe nicht wirklich warum so. Irgendeine Idee? Vielen Dank.Welchen Ressourcenqualifikator sollte ich verwenden, um 1080p, 720p Android TV zu unterstützen? - Android

+0

Anzeigevorrichtung, die 1080p bezieht sich i auf die Fähigkeit zu akzeptieren 1080p-Signale in nativer Auflösung, das heißt, es sind eine echte 1920 Punkte in der Breite und 1080 Pixel typischerweise bewirbt n Höhe, –

+0

wo als sw-7080p in dem "sw" steht für "Bildschirmbreite". –

+0

Verwenden Sie keines, zumindest für Dinge, die für Fernseher unterschiedlich sind. Beachten Sie, dass Layouts für Smartphones und Tablets häufig nicht für Fernsehgeräte geeignet sind, da sie von der Aktionsleiste abhängig sind, keine Unterstützung für Overscan bieten und so weiter. Verwenden Sie "-television" als Quellenqualifikationsmerkmal für TV-Ressourcen. – CommonsWare

Antwort

4

Zunächst einmal sind Sie im Wesentlichen richtig. Sie können

verwenden
sw360dp/ : 720p screens 
sw540dp/ : 1080p screens 

Der Grund, warum sw720p/sw1080p nicht funktionieren, weil sie nicht als Qualifikations existieren.

This is the official documentation über das Arbeiten mit verschiedenen Bildschirmgrößen. Wie Sie lesen können, müssen zwei verschiedene Einheiten berücksichtigt werden, wenn Sie Ihren Ordner dp berechnen möchten: die Pixelzahl (z. B. 720) und die Pixeldichte (d. H. Die Punkt-pro-Zoll-Einheit oder wie viele Pixel passen in einen einzigen Zoll).

Die Formel ist ganz einfach:

px = dp * (dpi/160) 

während in diesem Fall haben wir:

dp = px * 160/dpi 

Natürlich kann ein TV unterschiedliche Dichten aufweisen kann: Diese Tabelle Sie mehr darüber erzählt (Quelle : official documentation).

Densities table

Nehmen wir an, wir ein 1080p-Display mit extra hoher Dichte (@ 320 dpi) haben. Wir haben die Mathematik

dp = 1080 * 160/320 = 540 

ich die entsprechenden Ordner So bekommen in Ihre Ressourcen zu setzen


EDIT. Auf derselben Seite wird angegeben, dass es ein spezifischer tvdpi Qualifier ist, dass Sie können für Ihre TV-bezogenen Ressourcen (etwa 213 dpi) verwenden.

+0

Danke. Bedeutet das, dass alle 1080p und 720p TV 320 DPI sind? (Weil mein Kunde das DPI nicht kennt, als ich fragte). –

+0

Auf derselben Seite steht, dass "tvdpi" etwa 213 dpi ist. – Sebastiano

+0

Aus meiner Beobachtung verwendet ein 720p-Fernseher 'tvdpi', während ein 1080p-Fernseher' xhdpi' verwendet. Das bedeutet ** beide ** haben dichteunabhängige Abmessungen von 960x540 dp (ungefähr für 720p) und passen beide in den 'sw540dp'-Bucket. Daher glaube ich, dass die Verwendung von "sw360dp" zum gezielten Zielen auf 720p inkorrekt ist. –

3

Es gibt drei Bildschirmdichten, die für Android TV berücksichtigt werden können, und drei entsprechende Qualifizierer. Dazu gehören:

  1. tvdpi - (213dpi) - bestimmt für 720p-Fernseher;
  2. xhdpi - (320dpi) - für 1080p (HD) -Fernseher bestimmt;
  3. xxxhdpi - (640dpi) - bestimmt für 4k (Ultra HD) Fernseher.

Aber nach https://developer.android.com/training/tv/start/layouts.html#density-resources:

Ihr TV-Layout eine Bildschirmgröße von 1920 x 1080 Pixel [Standard 1080p/HD] und dann lassen Sie das Android-System Ihre Layoutelemente absteuernd Ziel sollte 720p bei Bedarf.

Dies bedeutet, dass, wenn Sie diesen Rat befolgen und Design immer auf eine 1080p-Spezifikationen, können Sie die -televisionUI Mode Qualifier nutzen konnte und mit ihm getan werden.

Wenn Sie jedoch unterschiedliche Bilder und Layouts für die verschiedenen TV-Größen liefern müssen, können Sie die oben genannten Bildschirmqualitätsmerkmale verwenden.

Die "Standard" -Bilder und -Layouts für TV können in einem Ordner -xhdpi gespeichert werden, da xhdpi der Qualifier für 1080p-Fernseher ist.

Wenn (optionale) hochauflösende Versionen von Bildern für 4k-TVs gewünscht werden, können sie als "2x" -Bilder geliefert und in einem Ordner drawable-xxxhdpi gespeichert werden. Ebenso könnten Dimensionen/Layouts, die nur auf 4k-TVs ausgerichtet sind, in -xxxhdpi platziert werden.

(insbesondere zu beachten, dass die -tvdpi Qualifier auf 720p spezifisch ist, und ist mit ziemlicher Sicherheit nicht das, was Sie moderne Fernseher unterstützen verwenden möchten.)

Die Dokumentation ist spärlich und etwas widersprüchlich, aber ich stützen dies in erster Linie auf diesen Quellen:

https://developer.android.com/guide/practices/screens_support.html https://stackoverflow.com/a/11581786/925478