wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Android/Challenge

패스트캠퍼스 챌린지 30일차

Kick_snare 2022. 2. 22. 11:10
728x90

30일차

30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online

강의 목표


  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 앱 개발시 원하는 기능을 구현하기 위해 어떤 기술이 필요한 지 알 수 있습니다.
  • 디자인 아키텍처 패턴, 비동기 처리 등 효율적인 앱 개발 방법을 익힐 수 있습니다.

목차 02 Basic - Ch04. 계산기


  • 인트로
  • 계산기 UI 그리기 - 1
  • 계산기 UI 그리기 - 2
  • 계산기 UI 그리기 - 3
  • 계산기로 계산하기 - 1
  • 계산기로 계산하기 - 2
  • 계산 기록 저장하기 - 1
  • 계산 기록 저장하기 - 2
  • 아웃트로

계산 기록 저장하기 - 1

  • 저번 시간까지 버튼을 보여주기 입력을 받아 계산을 하고 다시 연산하여 보여주는 동작을 짜보았다
  • 이번에는 이 기록을 로컬 DB에 저장하여 기록을 볼 수 있도록 하자
  • 늘 그렇듯 기록을 먼저 보여주는 View를 설계
<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/historyLayout"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="@color/white"
    android:visibility="gone"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@id/keypadTableLayout"
    tools:visibility="visible">

    <androidx.appcompat.widget.AppCompatButton
        android:id="@+id/closeButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@null"
        android:onClick="closeHistoryButtonClicked"
        android:stateListAnimator="@null"
        android:text="닫기"
        android:textColor="@color/black"
        android:textSize="18sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ScrollView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_margin="10dp"
        app:layout_constraintBottom_toTopOf="@+id/historyClearButton"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/closeButton">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/historyLinearLayout"
            android:orientation="vertical"

            />

    </ScrollView>

    <androidx.appcompat.widget.AppCompatButton
        android:id="@+id/historyClearButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="47dp"
        android:layout_marginEnd="47dp"
        android:layout_marginBottom="38dp"
        android:background="@drawable/button_background_green"
        android:onClick="historyClearButtonClicked"
        android:stateListAnimator="@null"
        android:text="계산기록 삭제"
        android:textColor="@color/white"
        android:textSize="18sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>
  • 기록 버튼을 눌렀을 때 보여줄 수 있는 모달 창을 띄어야한다
  • activity를 새로 만들진 않고 visibility를 조정하도록한다
  • 위에는 닫기 버튼이, 가운데에는 scroll 할 수 있는 계산기록이, 밑에는 계산기록을 초기화할 수 있는 버튼이 들어갈 예정
  • 계산기록을 저장하기 위해서는 그에 맞는 자료구조가 필요하다
  • 이를 위한 DataClass를 생성할 것이다
  • 먼저 app src에 model 패키지를 생성하여 History 액티비티를 생성한다
  • 그리고 Android Room 라이브러리를 사용하기 위해 Gradle에 추가하도록 하자
dependencies {
    def room_version = "2.4.1"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // optional - RxJava2 support for Room
    implementation "androidx.room:room-rxjava2:$room_version"

    // optional - RxJava3 support for Room
    implementation "androidx.room:room-rxjava3:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "androidx.room:room-guava:$room_version"

    // optional - Test helpers
    testImplementation "androidx.room:room-testing:$room_version"

    // optional - Paging 3 Integration
    implementation "androidx.room:room-paging:2.4.1"
}
  • 그리고 계산 기록 모델에 필요한 primary key 와 이름, 수식과 결과 값을 저장할 열을 생성해준다

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

수강인증샷

링크

https://bit.ly/37BpXiC

 

 

 

 

 

 

728x90