21

Zrobiłem mój ekran powitalny z tego samouczka i działa świetnie. https://www.bignerdranch.com/blog/splash-screens-the-right-way/ Zasadniczo założyć splascreen przez tematu:SplashScreen z Vector streched na pełnym ekranie

<style name="ThemeSplash" parent="Theme.AppCompat.NoActionBar"> 
     <item name="android:windowBackground">@drawable/drawable_splashcreen</item> 
    </style> 

Chciałam umieścić to wektor obraz wewnątrz tak:

(drawable_splashcreen)

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

<item 
    android:drawable="@drawable/vector_najdiflet_logo" 

    /> 

Obraz zostanie rozciągnięty na pełnym ekranie. W interfejsie API 23 działa tak, jak powinien. Ale na starszych urządzeniach to po prostu streches. Próbowałem szerokości, wysokości, a nawet pomieszałem z rzutniami, ale bez powodzenia. Jakieś poprawki do tego?

+1

Spróbuj ustawić żądane za pomocą i wysokość w znaczniku przedmiotu. – MrOnyszko

+0

Próbowałem już tego i nie działało na starszych urządzeniach. – WinterChilly

+0

zajrzyj do wnętrza grafiki wektorowej. Jest tam przypisana szerokość i wysokość. Grafika wektorowa jest renderowana jako mapa bitowa o tym rozmiarze przed skalowaniem w celu wyświetlania na dowolnym ekranie.Problem polega na tym, że: nie ma wartości, którą można określić, co oznacza "tak duży jak ekran". Każda wartość na małym ekranie będzie wyglądać na rozmytą na tablecie, mimo że zaczyna się od grafiki wektorowej. –

Odpowiedz

7

Dla pełnego ekranu powitalnego spróbować użyć:

android:gravity="fill_horizontal|fill_vertical" 

Jeśli nie rozwiązać może rozwiązaniem jest stworzenie rozdzielonych obrazów dla każdego rozmiaru rozdzielczości.


Najczęściej rozdzielczości:

  • Małe = 240 x 320px (ldpi)
  • medium = 320 x 480px (MDPI)
  • Large = 480 x 800px (hdpi)
  • xDłuższy = 640 x 960px (xhdpi)

pionowa Format:

  • ldpi = 240 x 360 x (0,75 x MDPI)
  • MDPI = 320 x 480 na (gęstość zasada)
  • hdpi = 480 x 720px (1,5 x MDPI)
  • xhdpi = 640 x 960 (2 x MDPI)
  • xxhdpi = 960 x 1440px (3 x MDPI)
  • xxxhdpi = 1080 x 1920px (4 x MDPI)
  • 0.123.

krajobrazu format (odwrócony format pionowy)

  • ldpi = 360 x 240 piks (0,75 x MDPI)
  • MDPI = 480 x 320px (gęstość zasada)
  • hdpi = 720X 480px (1.5 x MDPI)
  • xhdpi = 960 x 640 (2 x MDPI)
  • xxhdpi = 1440 x 960 (3 x MDPI)
  • xxxhdpi = 1920 x 1080px (4 x MDPI)

Więcej informacji można znaleźć tutaj:

  1. https://design.google.com/devices/

  2. Android splash screen image sizes to fit all devices

  3. http://vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer/

+0

Chcę, aby logo było oryginalnego rozmiaru, ale po prostu rozciąga się na cały ekran. To nie jest pożądany efekt. – WinterChilly

+0

WinterChilly, możesz spróbować stworzyć nowy obraz dokładnie z rozdzielczością swojego urządzenia i umieścić logo na środku bez zmiany jego pierwotnego rozmiaru. Tło obrazu może być białe lub czarne, aby stanowić podstawę logo umieszczonego w środku. Z obrazem w prawidłowej rozdzielczości i oryginalnym logo w środku może uzyskać pożądany efekt. Powodzenia! –

-3

Dont umieścić swoje zdjęcie w oknie: tło, zamiast dodawać jako android: SRC dla ImageView dla układu SplashScreenActivity.

+4

Nie chcę tworzyć kolejnej aktywności. Zobacz artykuł tutaj ... https://www.bignerdranch.com/blog/splash-screens-the-right-way/ Grafika/drawable działa tutaj, ale nie wektory. –

-3

** Cześć, możesz spróbować tego kodu:

window.getDecorView().setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
    | View.SYSTEM_UI_FLAG_FULLSCREEN 
    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 

To wszystko.

+0

Spróbuj wyjaśnić swoją odpowiedź. Odpowiedzi tylko na kod są mile widziane. – Pete

+0

Myślę, że ten problem używają java do rozwiązania jest lepszy niż rozwiązanie według tematu, może wpisać kod w działaniu lub w dowolnym kontekście. – markzog21

-2

Nawiązując do linku, który podałeś, to brakuje czynnika grawitacja:

<bitmap 
     **android:gravity="center"** 
     android:src="@mipmap/ic_launcher"/> 
+1

Mapa bitowa nie jest wektorem. – Softlion

-1

Dont umieścić swoje zdjęcie w oknie: Tło (style.xml)

zamiast

dodaj imageView w takim pliku układu,

<ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/vector_najdiflet_logo" 
     android:scaleType="centerCrop"/> 

Spróbuj zmienić,

android:scaleType="centerInside" 
+1

Nie działa to w samouczku Big Nerd Ranch, ponieważ główna aktywność jest uruchamiana, zanim aktywność splash będzie miała szansę pokazać jej układ. Kończy się od razu i wyświetlane jest tylko tło okna. Wypróbowałem to. – WindRider

1

Użyj mapy bitowej i zdefiniuj obraz w src. Ustaw grawitację do centrum

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

    <item android:drawable="@color/color_background_splash_screen"/> 
    <item> 
     <bitmap 
      android:gravity="center" 
      android:src="@drawable/ic_logo_splash"/> 
    </item> 
</layer-list> 

splash screen

+2

nie działa z wektorem, ponieważ wektor nie jest bitmapą – Softlion

+2

OP był specyficzny w użyciu grafiki wektorowej: "Chciałem umieścić w tym obrazie wektorowym" –

0

Nie sądzę, jest to możliwe do zrobienia z wektorami dla urządzeń < API 23, ponieważ nie jest możliwe, aby ustawić androida atrybuty: wysokość i Android: szerokość na losowaniu.

Aby wdrożyć mój ekran powitalny z skoncentrowanej ikony, miałem wyeksportować wektor moim logo .png dla każdego rozmiaru ekranu i umieścić bitmapę w warstwie liście:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:opacity="opaque"> 
    <item android:drawable="@drawable/splash_screen_background" /> 

    <item 
     android:left="20dp" 
     android:right="20dp"> 
     <bitmap 
      android:gravity="center" 
      android:scaleType="centerInside" 
      android:src="@drawable/logo_rasterised" /> 
    </item> 

</layer-list> 

Idealnie nie chciałbym mieć żadnych obrazów bitmapowych w moich zasobach, ale przynajmniej ekran powitalny to jedyne miejsce, w którym musiałem używać bitmap.

Powiązane problemy