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
Antwort
Zunächst einmal sind Sie im Wesentlichen richtig. Sie können
verwendensw360dp/ : 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).
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.
Danke. Bedeutet das, dass alle 1080p und 720p TV 320 DPI sind? (Weil mein Kunde das DPI nicht kennt, als ich fragte). –
Auf derselben Seite steht, dass "tvdpi" etwa 213 dpi ist. – Sebastiano
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. –
Es gibt drei Bildschirmdichten, die für Android TV berücksichtigt werden können, und drei entsprechende Qualifizierer. Dazu gehören:
- tvdpi - (213dpi) - bestimmt für 720p-Fernseher;
- xhdpi - (320dpi) - für 1080p (HD) -Fernseher bestimmt;
- 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 -television
UI 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
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, –
wo als sw-7080p in dem "sw" steht für "Bildschirmbreite". –
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