티스토리 뷰

Android

[Android] 기초 2 in Kotlin

DevJunku 2021. 11. 18. 20:26

패스트 캠퍼스 로또 번호 추천 받기 프로젝트

오늘 배운 것

  1. drawble 활용

    • shape Tag 사용
      • solid → 모양 결정
      • size → 크기 결정
        • width: 너비
        • height: 높이
  2. activity내의 알고리즘 삽입하여 로또 번호 추첨하기

    • 단순한 로또 알고리즘(이건 어렵지 않았음)
  3. UI componenet내에서 tools(실제로는 안보이지만, 안드로이드 스튜디오에서만 보이게 하는 역할) 사용하기

    • 하나의 xml 파일 내에서 많은 component가 존재하기 때문에 약간 복잡하게 보일 수 있으나
    • 가장 많이 느낀 것은 바로 id값을 어떻게 지정하는가? → 누가봐도 자명한 componenet를 가리키게끔 지어주는 것이 좋을 것 같음
      ex) Button1 (X), initSettingButton (O)
    • NumberPicker
      • maxValue
      • minValue
      • 이렇게 해서 범위를 지정해줄 수 있음
      • .value로 속성값 접근 가능
  4. constraintlayout

    • 담화 앱 제작할 때 써보았기 때문에 여기서 힘들지는 않았음

activity 복습

xml에 존재하는 모든 Componenet를 findViewById()를 통해서 불러왔음. 역시 activity 파일 내에서 Componenet의 속성에 접근하기 위해서는 객체 property에 접근하는 방식(객체.속성)과 동일하기 때문에, 별로 어렵지는 않았음. 중요한 것은 findViewByI를 많이 사용함에 따라 매운 잦은 private 선언이 이뤄졌다는 것. 이거를 방지하기 위해서 ViewBinding, DataBinding이 사용되는 것으로 알고 있는데, 아직까지 이부분까지는 못 배움 빠르게 학습할 것을 생각해야함.

그리고 오늘의 경우 곧바로 private val textView: TextView = findViewById(R.id.textView)와 같이 객체를 불러오지 않았고 다음과 같이 진행되었음

    private val initSetting: Button by lazy {
        findViewById<Button>(R.id.initSetting)
    }

초기화한 후 read-only로 사용할 목적인 변수에는 by lazy를 사용한다고 하는데, 아마 오늘 프로젝트의 목적이 단순한 binding에 초점이 맞춰져 있어서 그런지 모르겠다.

그리고 List<TextView> 안에 findViewById를 원소로 집어 넣은것도 있었는데, 이때는 인덱스로 접근해서 속성값에 접근할 수 있다.