본문 바로가기

Android/Java

간단한 SplashActivity 만들기

반응형

오늘은 간단한 Splash Activity 를 만들어보려 합니다.


기본 구성은


1. SplashActivity

2. SplashFragment

3. SplashViewPagerAdapter

4. 사용할 layout


입니다.


설명은 필요없다! 소스코드만 보겠다 하시면, 


https://github.com/JC-Choo/App_Memo/tree/android/app/src/main/java/com/example/cnwlc/memo/App/splash


를 참고해주세요!




1. SplashActivity


이 activity는 당연히 Splash에 사용할 View들의 집합이라 생각하시면 됩니다. 우선 Viewpager과 TabLayout을 선언하고,


데이터들을 가지고 나타낼 수 있는 adapter를 불러와 viewpager를 setup 시킵니다. 그러면 이 activity에서 할 일은 끝!!




2. SplashFragment


이 Fragment는 Splash를 간단하게 하나만 사용하실 분들은 필요 없습니다~~!!!


여러장의 이미지를 띄워 보여주고 싶다! 하시는 분들만 참고하세요!


우선 fragment는 newInstance를 사용하여 세팅해야합니다.




newInstance란?

디자인 패턴의 영역에 속하는 부분으로, "Factory Method Pattern"이라고 하는 디자인 패턴을 이용해 프래그먼트를 생성해주도록 하는 것.

부모 액티비티에서 생성자를 통해 프래그먼트를 직접 생성하는 것이 아닌 "newInstance()"라는 함수를 통해 생성 요청을 함으로써 액티비티와 프래그먼트간의 "의존성"을 줄이기 위한 방법. 실제로 함수의 구성을 살펴보면 자기 자신을 생성하는 생성자와 bundle을 이용해 초기값을 설정해주고 있음. 들어가게 되는 매개변수의 자료형과 개수는 개발자가 필요한 만큼 지정 가능

- 참고 : http://tedrepository.tistory.com/5



newInstance를 사용하는 이유는


>>> 재생성<<< 때문

안드로이드에서는 메모리가 부족하게 되면 액티비티를 파기하여 메모리를 확보하도록 설정이 되어있습니다.

액티비티 뿐만 아니라 프레그먼트도 파기되며 필요시에 재생성되게 됩니다.

재생성시에 필요한 생성자는 아무것도 매개변수가 없는 생성자!!! 여야만 합니다.

- 참고 : http://www.androidside.com/bbs/board.php?bo_table=B56&wr_id=30667


(Fragment는 Activity와는 다른 "생명주기"를 가지고 있으며, 사용 방법이 다릅니다. 저도 완벽하지 않아 공부 중에 있습니다... 완벽하게 이해가 어렵네요..)




newInstance()로 사용할 값들을 bundle로 저장해 fragment에 set시켜줍니다.


그리고 onCreate에서 그 값을 가져와 변수로 선언합니다.


onCreateView로 View를 그릴때 그 변수에 맞는 값으로 View를 선언해줍니다!


그러면 해당 값에 따른 View들을 이제 화면에 나타낼 수 있게 준비가 된 상태입니다.




3. SplashViewPagerAdapter


FragmentStatePagerAdapter를 extends 하고 필요한 것들만 insert해주면 끝!

Adapter에서는 반드시 구현해놓은 2번의 SplashFragment.newInstance(position)을 return해주는 것을 잊지 마세요!




4. layout은 위 깃헙에서 참고하셔서 사용하시면 됩니다.




마지막으로 TabLayout을 사용하기 위해서는 gradle에 design을 추가해야합니다!

implementation 'com.android.support:design:27.1.1'

잊지마세요!!!


--------------------------------이상 간단한 SplashActivity를 만드는 방법이었습니다.

반응형