[Android] - 계산기 만들기(클론 코딩) - 계산 기록O

2022. 9. 18. 16:25· Skils/Android
목차
  1. 👀결과물
  2. 💻계산기록을 나타내는 Layout
  3. 💡우선 Room을 사용하기 위해서는 3가지 구성요소를 만들어줘야 한다.
  4. 📕Dao
  5. 📕데이터 항목
  6. 📕데이터베이스 클래스
  7. 💡MainActivity.kt -DB선언
  8. 💻"="버튼
  9. 💻계산 기록 버튼
  10. 💻계산 기록 삭제 및 닫기
  11. ✔느낀 점
  12. 💡목표

👀결과물


ezgif-2-6709f38ffa


계산 기록을 저장하는 기능은 DB와 관련 있다.

안드로이드 스튜디오에서는 DB를 Room 라이브러리를 사용해서 이용한다.

Room에 대한 설명은 이전 포스팅을 보면 알 수 있다.

계산 기록을 보여주는 기능은 시계 모양의 버튼을 누르면 계산 기록을 포함하고 있는 레이아웃이 나타나게 했다.

💻계산기록을 나타내는 Layout

닫기 버튼과 계산 기록 삭제 버튼과 계산 기록을 보여줄 수 있는 화면은 Scrollview를 사용해서 계산 기록이 많더라도

모두 표현할 수 있게했다.

💡우선 Room을 사용하기 위해서는 3가지 구성요소를 만들어줘야 한다.

  • 데이터베이스 클래스
  • 데이터 항목
  • Dao

📕Dao

package com.example.calculator.Dao
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import com.example.calculator.model.History
@Dao
interface HistoryDao {
@Query("SELECT *FROM history")
fun getAll(): List<History>
@Insert
fun insertHistory(history: History)
@Query("DELETE FROM history")
fun deleteAll()

📕데이터 항목

package com.example.calculator.model
import androidx.room.ColumnInfo
import androidx.room.Entity // room 사용
import androidx.room.PrimaryKey
// 데이터 클래스로 선언
@Entity
data class History(
@PrimaryKey val uid: Int?,
@ColumnInfo(name="expression") val expression: String?,
@ColumnInfo(name= "result") val result: String?
)

📕데이터베이스 클래스

package com.example.calculator
import androidx.room.Database
import androidx.room.RoomDatabase
import com.example.calculator.Dao.HistoryDao
import com.example.calculator.model.History
// 데이터 베이스가 만들어질때 히스토리 테이블을 사용하겠다고 등록
@Database(entities = [History::class], version = 1)
abstract class AppDatabase : RoomDatabase() { // 추상 클래스
abstract fun historyDao(): HistoryDao // AppDatabase 생성시 HistoryDao를 가져가서 사용할 수 있게
}

💡MainActivity.kt -DB선언

lateinit var db:AppDatabase
db= Room.databaseBuilder(
applicationContext,
AppDatabase::class.java,
"historyDB"
).build()

💻"="버튼

DB에는 계산식과 계산 결과를 넣어줬다.

Thread(Runnable {
db.historyDao().insertHistory(History(null,input_text,result_text))
}).start()

💻계산 기록 버튼

fun historyButtonClicked(v:View) {
historyLayout.isVisible= true
historyLinearLayout.removeAllViews()
Thread(Runnable {
db.historyDao().getAll().reversed().forEach{
runOnUiThread{
val historyView=LayoutInflater.from(this).inflate(R.layout.history_row,null,false)
historyView.findViewById<TextView>(R.id.txt_expression).text=it.expression
historyView.findViewById<TextView>(R.id.txt_result).text="=${it.result}"
historyLinearLayout.addView(historyView)
}
}
}).start()
}

계산기록 버튼을 누르면 gone으로 선언된 레이아웃이 보이게끔 만들어줬고, historyLinearLayout 아래에 있는 view를 모두 지웠다.(기존 계산기 버튼 화면을 지우고 새 레이아웃만 보이게 했음.)

계산 기록을 들고 올 때는 처음에 들어왔던 계산 기록과 결과를 먼저 보여주게 하기 위해서 get.All(). reversed(). forEach를 사용해서 역순으로 하나하나 들고 왔다.

그리고 history_row.xml에 들어있는 계산 기록과 결과식을 계산기록 layout에 표시해줬다.

💻계산 기록 삭제 및 닫기

fun historyClearButtonClicked(v:View){
historyLinearLayout.removeAllViews()
Thread(Runnable {
db.historyDao().deleteAll()
}).start()
}
fun closeHistoryButtonCLicked(v: View){
historyLayout.isVisible=false
}
}

계산기록 삭제를 누르면 레이아웃에 있는 계산기록 및 수식을 화면에서 지우고, 디비에서도 지웠다.

닫기 버튼을 누르면 layout이 다시 gone으로 바뀌고, 화면에는 계산기의 화면이 나오게 된다.

✔느낀 점

구글링을 하면서 많은 코드를 참고해서 만든 것이고 거의 따라 치는 느낌이었다.
안드로이드에는 굉장히 많은 기능이 있고, 모르는 것도 많고 다양한 것을 표현할 수 있다고 느꼈다.
Layout에 관한 전반적인 지식과, 코틀린 문법 및, Toast, Span, Thread에 관한 내용을 더욱 자세하게 파고 들 필요가 있을 것 같다.

💡목표

  • 다양한 Layout 사용하기
    • visible, invisible, gone 차이
  • Thread에 대한 정확한 이해
  • Room(DB) 사용 익숙해지기
  • Toast, Span 등 자주 사용하는 기능 숙지
  • 모든 것에 기반이 되는 코틀린 문법 공부

✋두서도 없고 정리도 안된 허접한 글이지만 봐주셔서 감사합니다.✋

전체 코드는 깃 헙 저장소에서 확인할 수 있습니다.

코드 참고:

https://velog.io/@jhlsuper

[jhlsuper (Jamwon) - velog

Creative Coding HTML Canvas, JavaScript를 이용한 Creative Codeing 2022년 7월 24일 · 0개의 댓글 · 0

velog.io](https://velog.io/@jhlsuper)

저작자표시 (새창열림)

'Skils > Android' 카테고리의 다른 글

[Android] - Layout이란  (0) 2022.10.07
[Android] 애플리케이션 기본항목 - 4대 구성요소(Component)  (1) 2022.09.23
[Android] - 계산기 만들기 (클론 코딩) -계산 기록 x  (0) 2022.09.17
[Android] Room (로컬 데이터베이스에 데이터 저장)  (0) 2022.09.03
[Android Studio] 계산기 어플 앱 만들기(Kotlin) #1  (0) 2022.08.25
  1. 👀결과물
  2. 💻계산기록을 나타내는 Layout
  3. 💡우선 Room을 사용하기 위해서는 3가지 구성요소를 만들어줘야 한다.
  4. 📕Dao
  5. 📕데이터 항목
  6. 📕데이터베이스 클래스
  7. 💡MainActivity.kt -DB선언
  8. 💻"="버튼
  9. 💻계산 기록 버튼
  10. 💻계산 기록 삭제 및 닫기
  11. ✔느낀 점
  12. 💡목표
'Skils/Android' 카테고리의 다른 글
  • [Android] - Layout이란
  • [Android] 애플리케이션 기본항목 - 4대 구성요소(Component)
  • [Android] - 계산기 만들기 (클론 코딩) -계산 기록 x
  • [Android] Room (로컬 데이터베이스에 데이터 저장)
재한
재한
안녕하세요 💻
재한
짜이한
전체
오늘
어제
  • 분류 전체보기 (504)
    • Skils (118)
      • Android (52)
      • C++ (5)
      • Kotlin (36)
      • Algorithm (24)
      • Server (1)
    • CodingTest (228)
      • Programmers (45)
      • Baekjoon (183)
    • Experience (8)
      • 후기(코딩테스트,프로그램,프로젝트) (8)
    • Computer Science (70)
      • Design Pattern (2)
      • OOP (2)
      • Computer Architecture (14)
      • OS (2)
      • Software Engineering (3)
      • DataBase (8)
      • Network (39)
    • 학교 (75)
      • R프로그래밍 (26)
      • 회계와 사회생활 (17)
      • 컴퓨터학개론 (20)
      • it기술경영개론 (12)

블로그 메뉴

  • 홈
  • 태그
  • 카테고리
  • 글쓰기
  • 설정

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
재한
[Android] - 계산기 만들기(클론 코딩) - 계산 기록O
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.