초급 4.일반 계산기

정리

Layoutinflater

  • 반복적으로 사용되는 뷰를 잘라내서, 메모리에 불러와서 할당

레이아웃 자체에 가중치를 부여

  • app:layout_constraintVertical_weight="1.5"

테이블에서 ui사이즈를 벗어나지않게 조절

android:shrinkColumns="*"

button을 눌렀을때 촥 색이 퍼지는 효과

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/buttonPressGray">

눌렀을때 기본으로 살짝 올라오지않고, 평평하게 하려면

android:stateListAnimator="@null"

이 프로젝트에서는 사용과 클릭을 안하게하므로 enable, clickable을 false로 함

버튼리스너가 아니라 view를 그대로 받기

android:onClick="buttonClicked"

ImageButton에서 쓸 이미지는 일단 기본 이미지사용
drawable -> new -> vector asset

  • split함수를 통해 공백으로 띄어, 배열에 저장함
    val expressionText = expressionTextView.text.split(" ")

  • expressionTextView.text = text.dropLast(1) + operator
    //dropLast는 n만큼 문자를 버리는 함수

  • SpannableStringBuilder - 문자의 범위를 따로 색칠할 경우 사용

val ssb = SpannableStringBuilder(expressionTextView.text)
        ssb.setSpan(
            ForegroundColorSpan(ContextCompat.getColor(this,R.color.green)), //단독 getColor가 deprecated되면서 ContextCompat의 getColor를 이용
            expressionTextView.text.length - 1,
            expressionTextView.text.length,
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

        expressionTextView.text = ssb

스크롤뷰 - 레이아웃 하나를 스크롤할수있게함

ROOM

  • History 클래스 자체를 DB테이블로 사용하기위해 @Entity를 추가해야함
    -> import를 하기위해서는 gradle 에서 implementation설정을 해야함
plugins {
    id 'kotlin-kapt'  // room을 사용하기 위해 추가
}
dependencies {
    implementation "androidx.room:room-runtime:2.3.0" // runtime을 위한 입력
    kapt "androidx.room:room-compiler:2.3.0" // room complier의 최신버전 입력
}

새로운 패키지로 각 변수들의 저장 표시

data class History(
    @PrimaryKey val uid: Int?,
    @ColumnInfo(name = "expression") val expression: String?,
    @ColumnInfo(name = "result") val result: String?
)

@Dao - 조회, 삭제 등 관리기능

@Query문 예시

  • 하나만 삭제하고싶다면
    @Delete
    fun delete(history: History)
  • 모든 result가 인자로 들어온 result를 가져와서 History로 반환
    @Query("SELECT * FROM history WHERE result LIKE :result")
    fun findByResult(result: String) : List<History>
  • 만약 하나만 반환하고싶다면 LIMIT 1을 취함
    @Query("SELECT * FROM history WHERE result LIKE :result LIMIT 1")

좋은 웹페이지 즐겨찾기