2016-04-28 3 views
0

У моего приложения android требуется некоторое время для инициализации, и я хотел бы показать всплывающее изображение до появления экрана загрузки и скрыть его потом. Я просмотрел stackoverflow и нашел некоторые решения. Я попытался следовать this tutorial, в котором объясняется, как реализовать правильный заставку, которая начинается с активности всплеска, но это не помогло решить мою проблему, потому что между экраном заставки и экраном загрузки оставался еще несколько секунд. выводит из отдельного потока кода C++ и должен инициализировать кучу вещей до начала рендеринга, пожалуйста, не просите изменить эту часть, это кроссплатформенный движок C++). Затем я экспериментировал с ProgressDialog taken from here, начал его в onCreate основного действия и скрывался, когда C++-часть запускает фактический рендеринг, и она отлично работает, за исключением того, что она не является всплывающим изображением. Но время было именно тем, что мне нужно. Затем я заменил его на ImageView, и он не работал (изображение не отображается).ImageView в качестве заставки не работает

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    //... 
    mImageView = new ImageView(this); 
    mImageView.setScaleType(ScaleType.FIT_XY); 
    mImageView.setImageResource(R.drawable.splash_bg); 
    setContentView(mImageView); 
} 

splash_bg.png помещается в папку res/drawable и отлично отображает активность всплеска. Что не хватает?

ответ

0

Добавьте эту строку в методе OnCreate (Bundle savedInstance):

mImageView = new ImageView(this); 
    mImageView.setScaleType(ScaleType.FIT_XY); 
    mImageView.setImageResource(R.drawable.splash_bg); 
LayoutParams imageViewLayoutParams 
     = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     mImageView.setLayoutParams(imageViewLayoutParams); 
+0

Нет, все равно не работает. – LawfulChaotic

+0

В чем проблема? Изображение размыто или вообще не загружается. @LawfulChaotic – Lampard

+0

Изображение не загружается. – LawfulChaotic

1
xml for splash screen. 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@drawable/ic_splash_screen" /> 

</RelativeLayout> 

In MainActivity 



public class Splash extends Activity { 

    private final int SPLASH_DISPLAY_LENGHT = 1000; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.splashscreen); 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       Intent mainIntent = new Intent(Splash.this, 
         MainActivity.class); 
       Splash.this.startActivity(mainIntent); 
       Splash.this.finish(); 
      } 
     }, SPLASH_DISPLAY_LENGHT); 
    } 
} 
+0

Этот способ заставки показывается за одну секунду до начала основного действия, затем снова появляется черный экран. Таким образом, он просто добавляет еще одну секунду ожидания пользователя. Всплывающий экран должен быть видимым во время инициализации, а не перед ним. Кроме того, вместо фиксированного времени SPLASH_DISPLAY_LENGHT мне нужен способ отклонить всплывающий экран от основного действия, когда он начнет фактический рендеринг. – LawfulChaotic

+0

Попробуйте увеличить размер экрана заставки –

1

Вы должны сделали тему для выплеска деятельности, как:

<style name="AppTheme.Splash" parent="YOURMAIN_THEME"> 
     <item name="android:windowBackground">@drawable/splash_bg</item> 
</style> 

И создать свой всплеск в вытяжке каталоге splash_bg.xml like:

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