2016-05-13 29 views
2

Ich habe eine App mit einem Splash-Screen Ansicht, die wie folgt aussieht:Android Splash Screen Mittelbil

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@android:color/black"> 
    <ImageView android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:src="@drawable/splash2" 
     android:scaleType="centerInside" 
     android:adjustViewBounds="true" 
     /> 
    <TextView 
     android:id="@+id/txtVersion" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="@android:color/white" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="10dp" 
     android:textSize="20dip" 
     android:visibility="invisible" 
     android:text="Version "/> 
    <LinearLayout 
     android:id="@+id/lvSplashInfo" 
     android:layout_width="fill_parent" 
     android:layout_height="120dp" 
     android:layout_marginRight="40dp" 
     android:layout_marginLeft="40dp" 
     android:layout_alignParentBottom="true" 
     android:orientation="vertical" 
     android:visibility="invisible" 
     android:background="@android:color/black"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="bleh" 
      android:layout_margin="5dp" 
      android:layout_gravity="center_horizontal" 
      android:textColor="@android:color/white"/> 
     <TextView 
      android:id="@+id/txtPercent" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="0% of the total" 
      android:layout_margin="5dp" 
      android:textSize="18sp" 
      android:gravity="center_horizontal" 
      android:textColor="#9DBA32"/> 
     <TextView 
      android:id="@+id/txtFilename" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="File name: xxxxx" 
      android:layout_margin="5dp" 
      android:textSize="18sp" 
      android:visibility="invisible" 
      android:gravity="center_horizontal" 
      android:textColor="@android:color/white"/> 
    </LinearLayout> 
</RelativeLayout> 

Es macht ein Bild skaliert und in den Bildschirm zentriert. Leider funktioniert das nicht gut für uns. Es verursacht einen leichten weißen Blitz, bevor es die Ansicht lädt. Meine Lösung war, einen Aktivitätsstil zu verwenden. Das funktioniert großartig, außer dass ich das Bild nicht zentrieren UND skalieren kann. Ich kann es leicht zentrieren, aber es ist breiter als der Bildschirm. Hier ist mein Xml-Zeichen:

Wie skaliere ich und zentriere ich dieses Splash2 Bild?

Antwort

3

Sie können das Bild in Photoshop machen, es in der XML-Datei zentrieren und dann das Ganze zentrieren, aber ich würde einen Splash-Bildschirm beim Laden der App empfehlen, denn wenn Sie es mit einem Timer haben, verschwendet es Zeit. . das ist also, was ich einen splash-Screen wie diese haben tat SplashActivity.java

fügen Sie einen neuen Java class hinzufügen, lassen

Sie müssen nicht viel enter image description here

Erste, müssen Sie nennen es zu es:

package YOUR-PACKAGE-NAME; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 

public class SplashActivity extends AppCompatActivity { 

    @Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 

    Intent i = new Intent(SplashActivity.this, MainActivity.class); 
    startActivity(i); 
     finish(); 
    } 
} 

Danach, müssen Sie ein Zeichen für den Begrüßungsbildschirm haben, denn wenn Sie ein Layout haben, wird es erscheinen, wenn die App bereits geladen ist, so wird es keinen Sinn im Splash geben ... Gehen Sie zum Ordner drawable und erstellen Sie eine Datei mit dem Namen background_splash.xml. Es fügen Sie

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

wo ic_splash ist das Bild, das ich mit Photoshop mit einer Auflösung von 1280x720 erstellt und dann ein 9-Patch-Bild erstellt ... (Sie haben das 9-Patch-Bild haben, nicht normal zu haben, So klein und beschnittene Bild auf verschiedenen Geräten ..) gehen here und erzeugen bei Ihnen ... es erstellen, herunterladen und kopieren sie alle Ordner (mdpi, hdpi etc.), um Ihre res Ordner ... Nun gehen sie zu Ihrem values/styles.xml und Fügen Sie die NoActionBar Art

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:windowBackground">@drawable/background_splash</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 
hinzu

Dann öffnen Sie Ihre Manifest.xml und bearbeiten Sie die Aktivität mit intent-filter.

sollte Ihr

<activity 
android:name=".MainActivity" 
android:label="@string/app_name" 
android:icon="@drawable/ic_launcher" 
android:theme="@style/AppTheme" 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 

sein, so die .MainActivity mit .SplashActivity und die .MainActivity als eine andere Tätigkeit ersetzen, so dass am Ende Sie mindestens zwei Aktivitäten am Manifest.xml erklärt haben soll:

<activity 
android:name=".SplashActivity" 
android:theme="@style/SplashTheme" 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 
<activity android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:icon="@drawable/ic_launcher" or "@mipmap/ic_launcher" 
     android:theme="@style/AppTheme"> 

    </activity> 

Viel Glück! :) Wenn es Probleme gibt, fragen :)

+0

Getestet auf ein neues Projekt, funktioniert gut! :) –

+0

Wie kommt es, dass diese Antwort keine Stimmen hat !!! Das ist toll. Dies ist der Weg, um einen Begrüßungsbildschirm zu erstellen.Die Verwendung eines Themas ist die perfekte Lösung, da es geladen wird, bevor das Layout für die Wiedergabe verarbeitet wird. – Loudenvier