안드로이드 기초1

노지수·2022년 1월 28일
1

viewBinding

app > bulid.gradle

findViewById를 사용하지 않고 XML의 view component에 접근하는 object를 반환받아 view에 접근할 수 있는 방식

정리

buildFeatures{
        viewBinding true
}
  1. bulid.gradle에 코드를 입력한다.
  2. 모든 layout에 대해서 binding객체가 생성된다.
  3. binding객체는 id를 갖는 모든 view들을 하나의 property(속성)로 가진다.

Design

activity_main.xml > Design


위 사진처럼 각 위치는 이동만하는게 아니라 파란선으로 기준과 이어주고, 그 기준으로 부터 얼마나 떨어져있는지를 표시 해주어야 원하는 위치에 위치할 수 있다.

Event

MainActivity.kt

방법1 - binding을 사용해 객체화 시키고 바로접근

val binding by lazy{ ActivityMainBinding.inflate(layoutInflater) }
// binding을 사용해서 객체화를 시키고 바로접근 가능

override fun onCreate(savedInstanceState: Bundle?) {
// activity가 만들어질 때 딱 한번만 실행된다.
// 따라서activity를 만들 때 단 한번만 하면 되는 작업들은 여기에서 해준다.

    super.onCreate(savedInstanceState)
    // 상위 클래스의 onCreate메소드를 먼저 실행하고 override된 메소드를 실행한다
    
   // setContentView(R.layout.activity_main)
   // activity_main.xml 파일로 만든 레이아웃이 출력이 된다
	// 위 설명과 같이 레이아웃 출력
    setContentView(binding.root)
	
    // id가 btnSay인걸 클릭했을때 실행되는 이벤트
    binding.btnSay.setOnClickListener {
    	//로그출력 및 프린트출력
        Log.i(ContentValues.TAG, "btnSay 클릭했습니다")
        println("btnSay를 클릭했습니다")
		
        id가 textSay인곳의 text를 "Hello Android!!"로 변경
        binding.textSay.setText("Hello Android!!")
    }
}

방법2 - binding사용 x

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    setContentView(R.layout.activity_main)
	
 // R.id.abc = idrk abc인 곳에 접근한다
    val textSay = findViewById<TextView>(R.id.textSay)
    val btnSay = findViewById<Button>(R.id.btnSay)
    
    //btnSay라는 id를 가진 layout을 클릭시 textSay문구를 "Android World"로 변경
    btnSay.setOnClickListener {
        textSay.text = "Android World"

        // Toast
        val toast = Toast.makeText(
        		this.applicationContext, "버튼클릭!", Toast.LENGTH_SHORT
                    )
        toast.show()    // .show() -> 이거 안하면 toast가 안보임

        //Builder를 하는곳이 메인 액티비티에 있다.
        AlertDialog.Builder(this@MainActivity).setTitle("welcome") // 제목
        .setMessage("어서 오세요!!") // 메세지
        .setCancelable(false) // 화면밖터치시(ture=꺼짐 / false=안꺼짐)
        // {dialog, whitch->} 닫기 버튼을 클릭시 이벤트
        .setNeutralButton("닫기", DialogInterface.OnClickListener{dialog, whitch->
        }).show()
    }
	// onCreate가 최초 실행될때 로그 출력
    Log.i(ContentValues.TAG, "onCreate 실행")
}

이처럼 버튼을 클릭했을때, 해당 버튼의 id값과 문구의 id값을 가져와 문구나 알림창을 변경하거나 띄울 수 있다.

profile
프로그래밍, 개념 및 이론 기록

0개의 댓글