초급 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")
Author And Source
이 문제에 관하여(초급 4.일반 계산기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qk1890/앱개발-4.일반-계산기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)