ネイティブ Android 起動ページに反応する

インストール

最初のステップ (ダウンロード):

npm i react-native-splash-screen --save

アンドロイド:

  1. ファイルに android/settings.gradle 次の追加を加えま​​す。
include ':react-native-splash-screen'    
project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android' )
  1. android/app/build.gradle ファイルに、 :react-native-splash-screen コンパイル時の依存関係としてプロジェクトを追加します。
...
依存関係 { 
    ...
    実装プロジェクト(':react-native-splash-screen') 
}
  1. react-native-splash-screen 次の変更を介して、MainApplication.java ファイルを更新して使用します 。
// 反応ネイティブスプラッシュスクリーン >= 0.3.1 
import org.devio.rn.splashscreen.SplashScreenReactPackage; 
// 反応ネイティブスプラッシュスクリーン < 0.3.1 
import com.cboy.rn.splashscreen.SplashScreenReactPackage; 

public class MainApplication extends Applicationimplements ReactApplication { 

    private Final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { 
        @Override 
        public boolean getUseDeveloperSupport() { 
            return BuildConfig.DEBUG; 
        @Override 
        protected List<ReactPackage> getPackages() { 
            return Arrays.<ReactPackage>asList( 

        new 
                    MainReactPackage(),
            new SplashScreenReactPackage() //ここで 
            );
        } 
    }; 

    @Override 
    public ReactNativeHost getReactNativeHost() { 
        return mReactNativeHost; 
    } 
}

3 番目のステップ (プラグイン設定):

アンドロイド:

 次の変更を介して、MainActivity.java 使用するように を 更新します 。react-native-splash-screen

android.os.Bundle をインポートします。// ここで
com.facebook.react.ReactActivityをインポートします。
// 反応ネイティブスプラッシュスクリーン >= 0.3.1 
import org.devio.rn.splashscreen.SplashScreen; // ここで
// 反応ネイティブ-スプラッシュスクリーン < 0.3.1 
import com.cboy.rn.splashscreen.SplashScreen; // ここでは

public class MainActivity extends ReactActivity { 
   @Override 
    protected void onCreate(Bundle SavedInstanceState) { 
        SplashScreen.show(this); // ここでは
        super.onCreate(savedInstanceState); 
    } 
    // ...他のコード
}

入門

react-native-splash-screen JS ファイルにインポートします 。

import SplashScreen from 'react-native-splash-screen'

アンドロイド:

launch_screen.xml という名前の ファイルを作成します app/src/main/res/layout (  layout-フォルダーが存在しない場合は作成します)。ファイルの内容は次のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width ="match_parent" 
    android:layout_height="match_parent"> 
    <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/launch_screen" android:scaleType="centerCrop" /> </ 
RelativeLayout >

launch_screen.pngファイルを作成し、適切なフォルダーに配置する ことで、起動画面をカスタマイズします drawableAndroid はドローアブルを自動的にスケーリングするため、すべての携帯電話の密度に対応する画像を必ずしも提供する必要はありません。スプラッシュ スクリーンは次のフォルダーに作成できます。

  • drawable-ldpi
  • drawable-mdpi
  • drawable-hdpi
  • drawable-xhdpi
  • drawable-xxhdpi
  • drawable-xxxhdpi

primary_dark 呼び出さ れた色を追加します app/src/main/res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="primary_dark">#000000</color>
</resources>

オプションの手順:

スプラッシュ スクリーンを透明にしたい場合は、次の手順に従います。

 ファイルを開いて android/app/src/main/res/values/styles.xml 追加します 。<item name="android:windowIsTranslucent">true</item>次のようになります。

<resources> 
    <!-- 基本アプリケーションのテーマ。--> 
    <style name="AppTheme"parent="Theme.AppCompat.Light.NoActionBar"> 
        <!-- ここでテーマをカスタマイズします。--> 
        <!--设置透明背景--> 
        <item name="android:windowIsTranslucent">true</item> 
    </style> 
</resources>

詳細については、 例を参照してください

スプラッシュ画面が表示されるときのステータス バーの色をカスタマイズする場合は、次の手順を実行します。

作成し android/app/src/main/res/values/colors.xml て追加する

<?xml version="1.0"coding="utf-8"?> 
<resources> 
    <color name="status_bar_color"><!-- ステータス バーの色をここに指定します --></color> 
</resources>

このためのスタイル定義を次のように作成します android/app/src/main/res/values/styles.xml

<?xml version="1.0"coding="utf-8"?> 
<resources> 
    <style name="SplashScreenTheme"parent="SplashScreen_SplashTheme"> 
        <item name="colorPrimaryDark">@color/status_bar_color</item> 
    < /スタイル> 
</リソース>

show カスタム スタイルを含めるようにメソッドを変更します 。

SplashScreen.show(this, R.style.SplashScreenTheme);

使用法

次のように使用します。

import SplashScreen from 'react-native-splash-screen'

エクスポート デフォルト クラス WelcomePage extends Component { 

    componentDidMount() { 
    	// スプラッシュ スクリーンが表示されている間に処理を実行します
        // 処理 (非同期タスクなど) を実行した後、スプラッシュ スクリーンを非表示にします SplashScreen 
        。隠れる(); 
    } 
}

API

方法 タイプ オプション 説明
見せる() 関数 間違い スプラッシュ画面を開く (ネイティブメソッド)
show(最終アクティビティアクティビティ、最終ブール値フルスクリーン) 関数 間違い スプラッシュ画面を開く (ネイティブメソッド)
隠れる() 関数 間違い スプラッシュ画面を閉じる

テスト

Jest が機能するには、このコンポーネントをモックする必要があります。以下に例を示します。

// __mocks__/react-native-splash-screen.js
export default {
  show: jest.fn().mockImplementation( () => { console.log('show splash screen'); } ),
  hide: jest.fn().mockImplementation( () => { console.log('hide splash screen'); } ),
}

トラブルシューティング

スプラッシュ画面が常に引き伸ばされたり歪んで見えたりする

に、scaleType を指定して ImageView を追加します launch_screen.xml。例:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
>
  <ImageView 
    android:src="@drawable/launch_screen"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop"
  >
  </ImageView>
</FrameLayout>

貢献

問題は大歓迎です。バグのスクリーンショットとコード スニペットを追加してください。問題を解決する最も簡単な方法は、例の 1 つで問題を再現することです。

プルリクエストは大歓迎です。API を変更したい場合、または何か大きなことをしたい場合は、まず問題を作成して議論することをお勧めします。

おすすめ

転載: blog.csdn.net/txl910514/article/details/130438454