Hướng dẫn tạo App Icon, Splash Screen cho ứng dụng React Native.
Đối với app mobile thì app icon hay màn hình splash rất quan trọng, nó giúp cho ứng dụng của chúng ta nhìn chuyên nghiệp hơn, đẹp hơn và dễ tiếp cận với người dùng hơn. Trong khi đó, App icon và màn hình splash cũng là 1 dạng để marketing cho ứng dụng của bạn. Trong bài hôm nay mình sẽ hướng dẫn các ...
Cần chuẩn bị 2 hình ảnh đúng kích cỡ cho app icon và Splash screen đặt vào trong thư mục của project.
Icon App: icon.png square 512 x 512
Splash screen: splash.png quare 2048 x 2048
Bước 1: cài thư viện
// install tool brew install imagemagick npm install -g yo generator-rn-toolbox
Bước 2: Tạo ảnh Icon + Splash chuẩn định dạng
// generate splash screen images yo rn-toolbox:assets --icon icon.png --splash splash.png --store
Bước 3: Cài thư viện để tạo màn hình splash: react-native-splash-screen
yarn add react-native-splash-screen
Bước 4: Link thư viện
react-native link react-native-splash-screen
Bước 5: Config
Đối với IOS:
Mở xcode, vào project => build settings => header search paths add
$(SRCROOT)/../node_modules/react-native-splash-screen/ios
Cập nhật AppDelegate.m
#import "AppDelegate.h" #import <React/RCTBundleURLProvider.h> #import <React/RCTRootView.h> #import "RNSplashScreen.h" // here @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // ...other code [RNSplashScreen show]; // here return YES; } @end
Đối với android sửa ở file MainActivity.java
import android.os.Bundle; // here import com.facebook.react.ReactActivity; // react-native-splash-screen >= 0.3.1 import org.devio.rn.splashscreen.SplashScreen; // here // react-native-splash-screen < 0.3.1 import com.cboy.rn.splashscreen.SplashScreen; // here public class MainActivity extends ReactActivity { @Override protected void onCreate(Bundle savedInstanceState) { SplashScreen.show(this); // here super.onCreate(savedInstanceState); } // ...other code }
Tạo file launch_screen.xml vào thư mục android/app/src/main/res/layout như sau:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/launch_screen"> </LinearLayout>
thêm màu vào file android/app/src/main/res/values/colors.xml như sau:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="primary_dark">#000000</color> </resources>
Bạn cũng có thể chỉnh styles cho splash ở android/app/src/main/res/values/styles.xml và thêm style như sau
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="android:windowIsTranslucent">true</item> //styles </style> </resources>
Bước 6: Ở màn hình index.js của react native gọi thư viện splash như sau:
import SplashScreen from 'react-native-splash-screen' export default class WelcomePage extends Component { componentDidMount() { // do stuff while splash screen is shown // After having done stuff (such as async tasks) hide the splash screen SplashScreen.hide(); } }
Bạn cần ẩn màn splash đi sau khi ứng dụng đã được khởi tạo xong.
Chúc các bạn thành công!
Nguồn: Doc react-native-splash-screen