05.09 안드로이드 뷰 바인딩

최고고·2022년 5월 9일
0

ConstraintLayout

  • View 에 대해서 제약조건으로 화면을 구성하는 방법
  • 만약 제약조건이 어느곳에서도 걸리지 않은 경우 왼쪽 상단에 위치됨(디폴트)
  • 왼, 아래 중 하나 -수직제약
    왼, 오른 중 하나 - 수평제약
    ==>총2 개이상 연결이 되어져야함
  • 제약조건을 다른 View에 걸어준 경우 상대적 효과를 얻는다.
  • 제약조건의 단위(dp)-Density-independent Pixels
  • 텍스트크기 단위(sp)-Scale-independent Pixels

뷰 바인딩 간단 예제

Horizental guideline을 넣어주고 (55%로 설정함) LinearLayout을 ConstraintLayout 아래로 생성해준다
LinearLayout-vertical
LinearLayout 생성시 전체화면이 꽉차게 지정이 되기때문에
layout_width와 height를 100dp정도로해서 화면에 잘 나타나게 해준다음,
상하좌우의 제약조건을 걸어줌 아래제약조건은 가이드라인에 맞춰준다
그리고 나서 editText, button을 넣어주면 레이아웃안에 차례로 쌓인다.
각 아이디 지정해주고, java폴더에서 기능을 구현해주면 된다!

package com.example.myapplication0509;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.example.myapplication0509.databinding.ActivityMain2Binding;

public class MainActivity2 extends AppCompatActivity implements View.OnClickListener {
    Button btn_plus,btn_minus,btn_mul,btn_div;
    TextView result;
    EditText num1, num2;


    //바인딩 객체 만들기 -->어플에있는 모든 View에 대한 정보를 저장하고 있음
    ActivityMain2Binding binding;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMain2Binding.inflate(getLayoutInflater());  //xml에 있는 모든 정보를 java로 가져온다
        //binding  객체는 setContentView 전에 쓰기

        setContentView(binding.getRoot());    //R.layout.activity_main2 쓸 필요 없음
/*        btn_plus = findViewById(R.id.btn_plus);
        btn_minus = findViewById(R.id.btn_minus);
        btn_mul = findViewById(R.id.btn_mul);
        btn_div = findViewById(R.id.btn_div);
        num1 = findViewById(R.id.num1);
        num2 = findViewById(R.id.num2);
        result = findViewById(R.id.result);*/    // --->findViewById 필요없음

        binding.btnPlus.setOnClickListener(this);
        binding.btnMinus.setOnClickListener(this);
        binding.btnMul.setOnClickListener(this);
        binding.btnDiv.setOnClickListener(this);

        //binding.___ 자동완성 btn 해주면 id값이 바뀐 것을 볼 수 있다.

    }

    @Override
    public void onClick(View view) {
        int _result= 0;
        int _num1 = Integer.parseInt(binding.num1.getText().toString());
        int _num2 = Integer.parseInt(binding.num2.getText().toString());
        if(view.getId()==R.id.btn_plus) {
            _result = _num1 + _num2;
        } else if(view.getId()==R.id.btn_minus){
            _result = _num1 - _num2;
        }else if(view.getId()==R.id.btn_mul){
            _result = _num1 * _num2;
        }else if(view.getId()==R.id.btn_div){
            _result = _num1 / _num2;
        }
        binding.result.setText("연산결과 : " + _result);

    }
}

뷰 바인딩하기

  • 뷰화면의 요소를 따로 객체 생성(findViewById 해줄 필요없음)
  • 먼저

    해줘야됨
  • 바인딩 객체 만들기 -->어플에있는 모든 View에 대한 정보를 저장하고 있음 : ActivityMain2Binding binding;
  • xml에 있는 모든 정보를 java로 가져온다 : binding = ActivityMain2Binding.inflate(getLayoutInflater());
  • setContentView(R.layout.activity_main2)가 아닌 setContentView(binding.getRoot());
  • btn_plus.setOnClickListener(this); 부분이 binding.btnPlus.setOnClickListener(this);로 바뀐다. 바인딩은 카멜기법으로 변수가 생성된다
  • 상속받은 온클릭리스너의 오버라이딩 온클릭 메소드 도
    binding. 해줘야됨
    결과 텍스트도 binding으로 변경~

0개의 댓글