簡體   English   中英

ImageView作為初始屏幕不起作用

[英]ImageView as a splash screen not working

我的Android應用程序需要花一些時間進行初始化,因此我想在加載屏幕出現之前顯示啟動圖像,然后將其隱藏。 我搜索了stackoverflow並找到了一些解決方案。 我試圖按照本教程進行操作該教程說明了如何實現在啟動活動中啟動的正確啟動屏幕,但並不能解決我的問題,因為啟動屏幕和加載屏幕之間仍然存在幾秒鍾的黑屏(它是從C ++代碼的單獨線程進行渲染的,並且必須在渲染開始之前初始化一堆東西,請不要要求更改該部分,這是一個跨平台的C ++引擎)。 接下來,我嘗試了一個從此處獲取的ProgressDialog,在main活動的onCreate中啟動了它,並在C ++部件開始實際渲染時將其隱藏,並且除了不是初始圖像外,它都可以正常工作。 但是時間正是我所需要的。 然后我用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文件夾,並在啟動活動中正常顯示。 什么東西少了?

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);
    }
}

您應該為您的啟動活動設置主題,例如:

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

然后在可繪制的目錄splash_bg.xml中創建飛濺,如下所示:

<?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>

在您的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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM