Android-splash-Bildschirm ohne logo Verzerrung
Ist es möglich, erstellen Sie einen splash-screen mit einem logo, das behält das Seitenverhältnis, während das hintergrund-Bild kann in der Größe verändert werden, unabhängig? Ich bin derzeit mit mehreren .png-Dateien für verschiedene Auflösungen und dass Sie gut Aussehen auf den meisten Geräten. Es gibt jedoch ein paar Telefone, die das verzerren, mein logo stark (d.h. die Samsung S8, mit bewegen, vertikalen Platz auf dem Bildschirm).
Kann ich viel mit Verzerrung für meine splash-screen hintergrund, aber der skinny/gequetscht logo ist nicht akzeptabel. Weiß jemand, wie dies zu tun? Und würde ein Vektor drawable-logo besser zu sein, als eine .png für das neue layout?
- ist Ihr Bild (Bildansicht) haben wrap_content für Gewicht und Höhe?
- Nein, es ist match_parent.
- Wenn ich verstehe, Sie haben einen hintergrund, und dann ein Bild darüber. und das Bild (Symbol) ist verzerrend auf einigen Geräten?
- ich stellte eine Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur ein portrait-Bild für den Begrüßungsbildschirm, hier ist eine Lösung, die den vollen Bildschirm auf hochformat, und zentriert, aber nicht beschnitten
edit:
portraitLandschaft:splash_screen.xml:
values/styles.xml
values-port/styles.xml
<item name="android:windowBackground">@drawable/splashscreen</item>
auf das Thema.windowBackground
für den splash-screen.. mit deiner Lösung Sie können immer noch weißer Bildschirm, bevor Sie Ihre Aktivität layout aufgeblasen wird. bignerdranch.com/blog/splash-screens-the-right-way/...Rendering ein splash-Ansicht in einer layout.xml anstatt ein Design-hintergrund (wie andere Antworten hier empfehlen) dauert länger zu laden. Dies ist, weil die app ' s theme wird zuerst geladen, dann die Aktivität gebaut ist und das layout aufgeblasen, letzten. Da der Zweck der splash-screen wird etwas angezeigt, während die app lädt, mit einer ~0,5 s Verzögerung beim laden der splash-screen selbst, die Ergebnisse in eine spürbare Verzögerung. Laden Sie sich einen Namen als ein Thema windowBackground besser abschneidet (macht fast sofort nach dem Tippen auf das launcher-Symbol), hat aber einige Einschränkungen zu umgehen. Ihre aktuelle Methode zu definieren, mehrere logo-Größen abhängig von der Bildschirmbreite ist der richtige Weg, um mit dieser situation umzugehen. Hier ist eine Beispiel-Konfiguration, die Griffe Unterschiede zwischen pre-und post-Android-v21:
values/themes.xml:
values-v21/themes.xml:
drawable/splash_logo_theme.xml
Weiter, können Sie auch eine Kopie von "splash_logo.png" für verschiedene Bildschirm-Konfigurationen. Sie haben ein paar sinnvolle Optionen hier. Eine erschöpfende Ansatz könnte auch verschiedene logos für jede Bildschirm-Größe:
Den "swXXXdp" bedeutet, dass die XXX ist der kleinste screen dimension (Breite oder Höhe) in dp. 820dp ist ein sehr großes tablet, 320dp wird eine kleine alte Gerät, und die meisten Flaggschiff-Geräte werden heute in der 400dp Kategorie. Ein 450dp Breite Gerät verwenden würde, die 400dp Bild.
Warum habe ich das definieren xxxhdpi hier? Denn wenn Sie nicht angeben, wird Android davon ausgehen, es ist ein mdpi Bild und versuchen Sie zu gehobenen/Größe für höhere dpi-Geräte (die meisten Flaggschiff-Handys sind heute xxhdpi). Das Hochskalieren führt Ihr image als kantiger und größer als das original. Durch die Angabe xxxhdpi hier, Android wird nur versuchen, Sie zu verkleinern das Bild, sicherzustellen, dass das Bild nie blocky; dies ist eine Optimierung, so dass wir don ' T müssen auch definieren Sie separate Bilder für ldpi, mdpi, hdpi, xhdpi etc.
6 Bilder in die APK ist eine Art Abfall obwohl. Wir können weiter optimieren dieser Ansatz um weniger Bilder in der app und gewährleisten eine kleinere APK-Größe. Stattdessen lassen Sie uns nur die folgenden beiden Bilder:
Alle Geräte 600dp und größer (Tabletten) haben eine größere Kopie des Bildes, um die Vorteile der größeren Bildschirm Immobilien, während alle anderen Telefone verwenden eine kleinere Kopie befindet sich im bin-ohne Bildschirm-Breite qualifier. Der Nachteil hier ist, da jede Gruppierung deckt eine große Bandbreite von Rasterweiten, das logo auf ein 4" Gerät wird einen größeren Teil der Leinwand, als auf einer 6" - Geräte. Dies ist ein Kompromiss zur Senkung der APK-Größe, und die meisten Benutzer nicht bemerken, so lange, wie das Bild wird nie geschnitten, auch auf dem kleinsten Gerät.
So, was Größe der png ' s sollten wir einbeziehen? Sie müssen Sie in einer bestimmten Größe angezeigt werden, in einem Thema, da Sie im Gegensatz zu in einer layout.xml wir können nicht angeben Breite/Höhe in XML (drawable Breite/Höhe Unterstützung wurde nur Hinzugefügt, in der API-23). Dies bedeutet, wenn Sie eine nicht-optimale png Größe, es erscheint auch kleine oder zwei große; wenn die zu groß, es wird tatsächlich abgeschnitten. Einen guten plan, um die richtige Größe zu bekommen ist:
Woher wissen Sie, welches Gerät die Bildschirm-Auflösung gehört zu dem swXXXdp Kategorie? Dies erfordert eine einfache Berechnung. Lässt Blick auf die Pixel-XL:
Haben Sie schaute in Beibehaltung des Seitenverhältnisses für die
ImageView
? Hier ist eine relevante Frage, die sollten Sie in die richtige Richtung: Wie groß ein Bild in der Bildansicht zu halten, wird das SeitenverhältnisWird dies tun, diese
Dies ist auf ein nexus 10
windowBackground
für den splash-screen.. mit deiner Lösung Sie können immer noch weißer Bildschirm, bevor Sie Ihre Aktivität layout aufgeblasen wird. bignerdranch.com/blog/splash-screens-the-right-way/...Keine Notwendigkeit für die Verwendung von layouts überhaupt, verwenden Sie ein LayeredList, und legen Sie es als hintergrund. Hier ist ein Beispiel;