Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

모바일 앱(안드로이드)

안드로이드 앱 로딩 페이지 (Splash) 하나 쯤 만들기...

Billcorea 2021. 7. 30. 09:47
반응형

앱을 만들다 보니 로딩 화면에서 광고문구등을 넣어서 사용하고 싶은 요청이 있다. 이런건 어떻게 ? 그냥 쉬운 생각으로 빈 activity 을 만들어서 잠시 보여주고 그냥 닫아 주면 되지 않을까 ? 그래서 다소 빈약한 layout을 가지는 activity을 하나 만들었다.

먼저 layout 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="18dp"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="18dp"
    android:paddingBottom="@dimen/activity_vertical_margin"

    tools:context=".LoadingPage">

    <TextView
        android:id="@+id/textView"
        android:layout_width="180dp"
        android:layout_height="65dp"
        android:text="@string/loading"
        android:textSize="34sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.593"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.421" />

    <TextView
        android:id="@+id/textView8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="420dp"
        android:gravity="center_horizontal|center_vertical"
        android:textSize="20sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="460dp"
        android:gravity="center_horizontal|center_vertical"
        android:textSize="20sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="500dp"
        android:gravity="center_horizontal|center_vertical"
        android:textSize="20sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

 결과물은 이런 정도 메시지가 들어가는 layout

예시물에는 사용자의 요청에 따라 일부 문구가 들어가기는 하지만, 

이건 단순 예제 이니 참고만...

 

 

 

 

 

 

 

 

 

다음은 activity을 만들면...

public class LoadingPage extends Activity implements View.OnClickListener {

    private static final String TAG = "LoadingPage";
    ActivityLoadingPageBinding binding ;
    SharedPreferences sp ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        sp = getSharedPreferences(getPackageName(), MODE_PRIVATE);
        binding = ActivityLoadingPageBinding.inflate(getLayoutInflater());
        View view = binding.getRoot() ;

        setContentView(view);

    }

    @Override
    protected void onStart() {
        super.onStart();
        startLoading();
    }

    private void startLoading() {
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                finish();
            }
        }, 3000);
    }

}

이런 정도의 코드... acitivity 의 lifecycle 을 보고 어디쯤에서 종료를 하게 만들껀가 그것을 고민했고, 다음은 열리자 마자 닫아 버리면 안되니까... handler 을 이용해서 약간의 지연 (3000ms = 3sec) 을 두고 앱을 종료해 주는 것으로 끝.

그럼 이걸 어떻게 호출하지 하는 건 다음과 같이 MainActvity 에서 호출하는 방식으로 처리를 했다.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        ...
        
        Intent intent = new Intent(this, LoadingPage.class);
        startActivity(intent);
        
        ...
    
    }

이렇게 MainActivity 을 시작하자 마자 LoadingPage 을 호출하는 것으로 그렇게 하면 사용자는 메인화면위에 올라온 loading 페이지를 잠시 보고 사라지는 것을 보게될 것이다. 

 

이것으로 끝,,,

 

 

 

반응형