Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 서로소
- 자바스크립트 이벤트처리
- 자바 순열 코드
- 자바입출력
- Java
- 자바스크립트 이벤트중지
- 상속
- Interface
- 자바 재귀 조합
- 자바
- java lambda
- 알고리즘
- jquery dom 계층 선택자
- 조합 재귀
- str to char array
- 순열코드
- 알고리즘 그래프
- parseInt()
- 자바 조합 재귀
- 순열 재귀
- 후위표기
- jquery 필터선택자
- char to str
- java Collections.sort()
- java 내부 클래스
- jquery 이벤트 처리
- inner class
- 재귀
- jquery 속성선택자
- 재귀함수
Archives
- Today
- Total
유블로그
[React Native] 앱 첫 로딩 실행 화면 (Splash 화면) 구현 본문
1. npm 으로 설치
$ npm i react-native-splash-screen --save
www.npmjs.com/package/react-native-splash-screen
2. MainActivity.java 수정
package com.frontend;
import com.facebook.react.ReactActivity;
import android.os.Bundle; // 추가
import org.devio.rn.splashscreen.SplashScreen; // 추가
public class MainActivity extends ReactActivity {
// 추가
@Override
protected void onCreate(Bundle savedInstanceState) {
SplashScreen.show(this);
super.onCreate(savedInstanceState);
}
@Override
protected String getMainComponentName() {
return "frontend";
}
}
3. app/src/main/res 에 layout 폴더를 만들고 launch_screen.xml 파일을 만든다.
<?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>
4. splash 이미지 추가 - launch_screen.png
app/src/main/res 에 있는 폴더들에
모두 같은 이미지를 넣어준다.
파일이름은 무조건 'launch_screen.png' 로 해야한다.
5. app/src/main/res/values/colors.xml 생성
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary_dark">#000000</color>
</resources>
6. 상태바 커스텀 (필수 x)
나는 splash 이미지와 동일한 색상의 상태바를 원했기 때문에 이 step 을 진행했다.
android/app/src/main/res/values/colors.xml 를 수정한다. (5에서 추가)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary_dark">#000000</color>
<color name="status_bar_color">원하는 색상코드</color>
</resources>
android/app/src/main/res/values/styles.xml 수정
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:textColor">#000000</item>
</style>
<!-- 추가 -->
<style name="SplashScreenTheme" parent="SplashScreen_SplashTheme">
<item name="colorPrimaryDark">@color/status_bar_color</item>
</style>
</resources>
7. 2번을 수정한다.
SplashScreen.show(this); 를
SplashScreen.show(this, R.style.SplashScreenTheme);
이렇게 수정!
8. App.js 수정
import React, {useEffect} from 'react';
import {Provider} from 'react-redux';
import {configureStore} from '@reduxjs/toolkit';
import rootReducer from './src/modules';
import {NavigationContainer} from '@react-navigation/native';
import StackNav from './src/navigations/Stack';
import {shoppingListApi} from './src/lib/api/shoppingList';
import SplashScreen from 'react-native-splash-screen'; // 라이브러리 추가!!
const store = configureStore({
reducer: rootReducer,
middleware: getDefaultMiddleware =>
getDefaultMiddleware({
thunk: {
extraArgument: shoppingListApi,
},
serializableCheck: false,
}),
});
const App = () => {
// SplachScreen hide 하는 코드 추가한다!!!!!
useEffect(() => {
SplashScreen.hide();
}, []);
return (
<Provider store={store}>
<NavigationContainer>
<StackNav />
</NavigationContainer>
</Provider>
);
};
export default App;
원래 자신의 코드에서 import 하고 App 에 useEffect 추가하면 된다.
'React' 카테고리의 다른 글
[React Native] 앱 아이콘 & 앱 이름 바꾸기 (0) | 2021.05.05 |
---|---|
[React Native] 쉐이킹 이벤트 기능 (0) | 2021.05.05 |
[React Native] 폰트 설치 및 적용 (0) | 2021.05.04 |
[React Native] Error: Activity class does not exist. (0) | 2021.05.04 |
[React-Native] @react-native-community/datetimepicker 한글로 바꾸기 (0) | 2021.04.30 |