刘贵学博客

Weex 入门 2 修改Splash页面

Splash页面指的是App的首次启动页面,而常见的App界面应该只需要一个 图片即可。原有的Weex启动页,是个动画效果,动画执行完成后(固定的时间)自动加载主页面。所以,这并不是真正意义上的 等待页面。

所以,我们的需求是: 在主页面加载完成后,等待页面消失。

App的启动顺序是:

WXApplication -> SplashActivity -> WXPageActivity

  • WXApplication 初始化配置、加载插件;
  • SplashActivity App等待页
  • WXPageActivity App主页面

1. SplashActivity

功能需求:
1. 如果加载layout/activity_splash.xml, 耗时太多了。 SplashActivity的资源文件应该越简单约好。
2. 初始化加载主页功能,完成后,直接跳转到主页。

    package com.alibaba.weex;
    
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.text.TextUtils;
    import com.alibaba.weex.commons.util.AppConfig;
    
    public class SplashActivity extends AppCompatActivity {
    
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        gotoMainPage();
        finish();
    
      }
    
    
      private void gotoMainPage(){
        String url = AppConfig.getLaunchUrl();
        if (!TextUtils.isEmpty(url)) {
          Intent intent = new Intent(Intent.ACTION_VIEW);
          String scheme = Uri.parse(url).getScheme();
          StringBuilder builder = new StringBuilder();
          if (TextUtils.equals("file", scheme)) {
            intent.putExtra("isLocal", true);
          } else if (!TextUtils.equals("http", scheme) && !TextUtils.equals("https", scheme)) {
            builder.append("http:");
          }
          builder.append(url);
    
          Uri uri = Uri.parse(builder.toString());
          intent.setData(uri);
          intent.addCategory("com.taobao.android.intent.category.WEEX");
          intent.setPackage(getPackageName());
          startActivity(intent);
          finish();
        }
      }
    }

2. AndroidManifest.xml

2.1 设置 SplashActivity 的 theme 为SplashTheme

 <activity
                android:name=".SplashActivity"
                android:configChanges="orientation|keyboardHidden|screenSize"
                android:label="@string/app_name"
                android:screenOrientation="portrait"
                android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

2.2 在 res/values/theme.xml 目录下:

 <style name="SplashTheme" parent="FullscreenTheme">
    <item name="android:windowBackground">@drawable/splash_page</item>
    <item name="android:windowFullscreen">true</item>
  </style>

2.3 在 res/drawable/splash_page.xml 目录下:

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

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

    <item>
        <bitmap
            android:gravity="fill"
            android:src="@drawable/splash_pic" />
    </item>

</layer-list>

把等待页面移到 res/drawable/splash_pic.png 即可。