농농씨 2023. 8. 11. 20:31

들어가기에 앞서, 데이터바인딩에 대해 알아보자.

 

데이터바인딩이란?

데이터 바인딩(data binding)은 제공자와 소비자로부터 데이터 소스를 함께 묶어 동기화하는 일반적인 기법.

https://salix97.tistory.com/243

 

data binding 은 왜 사용할까?

데이터 바인딩을 사용하면, 데이터를 UI 요소에 연결하기 위해 필요한 코드를 최소화할 수 있다.

 

데이터바인딩을 사용하려면, 1. 그래들 파일의 android {} 안에

buildfeatures{
    databinding = true
}

와 같이 선언해준다.

2. activity_main.xml 파일의 전체를 <layout>으로 감싼다. ➡️ 잊지말것❗️❗️ 

3. 메인 액티비티의 MainActivity 클래스를 다음과 같이 작성한다.

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

//        // 1번 방식 - findViewById 이용
//        val btn = findViewById<Button>(R.id.testBtnId)
//        btn.setOnClickListener {
//            Toast.makeText(this, "click", Toast.LENGTH_LONG).show()
//        }

        // 2번 방식 - Databinding
        binding.testBtnId // findViewId를 사용하지 않아도 바로 찾아지는 걸 알 수 있다.

    }
}

로그보는법


색깔코드 찾는법

구글에 '노란색 hex' 등 hex 붙여서 검색하기

 


주사위 앱 만들기!

 

1. 뷰들이 차지하는 공간을 균등하게 배치하고 싶다면?

layout_weight="1" 이것들만 넣어줘도 균등하게 배치 되고 상위 태그에 weightSum 속성에 합을 넣어줘라

아래에 설명 잘돼있음

https://wimir-dev.tistory.com/4

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:weightSum="2">
        <ImageView
            android:src="@drawable/dice_1"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_weight="1"/>
        <ImageView
            android:src="@drawable/dice_1"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_weight="1"/>
    </LinearLayout>

 

2. Random() 함수 써보고 로그로 확인하기

mainactivity로 검색했더니 랜덤한 숫자들이 잘 찍혔군요 

 

3. 뷰 객체 얻고 if 함수로 랜덤숫자 값 따라 이미지 세팅하기

 

음! 왜이럴까

중간까진 잘 했는데 왜 종료될까요....