2012-09-26 13 views
15

Sto utilizzando il seguente stile per visualizzare una schermata iniziale per un'applicazione Android scritta in MonoDroid. Tuttavia, sembra prendere l'immagine e ingrandirla per adattarla all'intero schermo mentre si incasina le proporzioni. Pertanto, l'immagine sembra enorme e terribile.Mostra immagine splash screen con adattamento automatico

C'è un modo per ottenere il massimo, ma mantenere le proporzioni in modo che sia ancora bello?

<style name="Theme.Splash" parent="android:Theme"> 
    <item name="android:windowBackground">@drawable/splashscreenimage</item> 
    <item name="android:windowNoTitle">true</item> 
</style> 

Questa è l'attività in C# che crea la schermata iniziale e passa al login.

[Activity(MainLauncher = true, Theme = "@style/Theme.Splash", NoHistory = true)] 
    public class SplashScreenActivity : Activity 
    { 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Start our real activity 
     StartActivity(typeof(LoginActivity)); 
    } 
    } 
+0

Date un'occhiata a questo [post] (http://stackoverflow.com/questions/2521959/how-to-scale-an-image-in-imageview-to-keep-the-aspect-ratio), è una specie di problema simile. – Michael

+0

che utilizza una vista immagine. Questo è strettamente lo sfondo della finestra. In MonoDroid c'è una seconda o due pause mentre l'ambiente è caricato. Volevo visualizzare una schermata iniziale durante quella pausa. – Telavian

risposta

25

Ci sono diversi tipi di drawable in Android inclusi bitmap effettivi, nove patch e file XML. Prova a racchiudere il file immagine con un file XML che gli assegna gli attributi e quindi utilizzare il file XML come disegnabile invece dell'immagine sorgente.

Supponiamo che il file XML si chiama scaled_background e la vostra immagine originale è semplicemente background.png:

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
android:gravity="center" 
android:src="@drawable/background" /> 

Invece di impostare lo sfondo di riferimento @drawable/background si sarebbe imposta per fare riferimento al file XML: @drawable/scaled_background in questo esempio. I dettagli sulle modalità di ridimensionamento sono menzionati nello Drawable documentation.

+0

mentre questo funziona non allungando l'immagine, sui tablet ho spazi vuoti intorno alla mia immagine splash. È possibile creare uno sfondo colorato sotto 'android: src =" @ drawable/background "' in quel file xml? – lxknvlk

+3

sicuro, usa l'elenco dei livelli :) ' ' –

3

Sembra prendere l'immagine e ingrandirla per adattarsi all'intero schermo mentre si incasina il rapporto aspetto. Quindi, l'immagine sembra enorme e terribile.

C'è un modo per ottenere di massimizzare, ma mantenere le proporzioni in modo da sembra ancora buono?

La ragione per l'immagine viene ingrandita è perché l'immagine si utilizza ha pixel superiori rispetto alla risoluzione dello schermo del dispositivo si sta testando l'applicazione in. Per risolvere questo, il metodo migliore è quello di creare immagini di una corretta dimensione (pixel) per lo schermo del dispositivo e quindi inserirli in file disegnabili (drawable-ldpi, drawable-mdpi, drawable-hdpi, ecc.) di conseguenza.

Di seguito è riportato un elenco di dimensione minima dello schermo per vari display come fornito da Google (tutto in pixel): -


Per Android dispositivi mobili

LDPI- 426 x 320

MDPI- 470 x 320

HDPI- 640 x 480

XHDPI- 960 x 720


per i dispositivi Android Tablet

LDPI- 200 x 320

MDPI- 320 x 480

HDPI- 480 x 800

XHDPI- 720 x 1280


NOW Crea un XML drawable in res/drawable che fornirà sfondo della propria attività spruzzata nel tema (Theme.Splash) utilizzando layer-list. L'immagine viene caricata in <bitmap> ed è centro allineata utilizzando l'attributo gravità .

<!-- background_splash.xml --> 
<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:drawable="@color/gray"/> 

    <item> 
     <bitmap 
      android:gravity="center" 
      android:src="@drawable/splashscreenimage"/> 
    </item> 

</layer-list> 

Ora modificare il tuo stile (Theme.Splash) e impostare background_splash.xml come sfondo del vostro attività spruzzi nel tema.

<style name="Theme.Splash" parent="android:Theme"> 
    <item name="android:windowBackground">@drawable/background_splash.xml</item> 
    <item name="android:windowNoTitle">true</item> 
</style> 

Con ciò, l'immagine deve essere impostato al centro con proporzioni mantenuto.

Nota: Per il ridimensionamento delle immagini, è possibile utilizzare Adobe Photoshop (trovo che sia più facile lavorare con). Bisognerà fare un po 'di sperimentazione per ottenere la giusta dimensione dell'immagine desiderata per la schermata iniziale.

In base alle preferenze, è possibile utilizzare anche 9 Immagine patch in modo che il bordo dell'immagine possa allungarsi per adattarsi alle dimensioni dello schermo senza influire sull'area statica dell'immagine.


Link di riferimento:

costruzione Splash Screen: https://plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd

Splash dimensioni dello schermo immagine: android splash screen sizes for ldpi,mdpi, hdpi, xhdpi displays ? - eg : 1024X768 pixels for ldpi