[Android-Native] Layout

미숙한 초보 코딩.Js·2020년 12월 12일
0

JavaAndroid

목록 보기
3/4

ConstraintLayout (제약 레이아웃)

  • 안드로이드는 기본적인 레이아웃을 제약 레이아웃을 사용합니다.
  • 제약 레이아웃은 뷰의 크기와 위치를 결정할때 제약조건을 사용하는 것입니다.
  • 제약 조건은 레이아웃 안의 다른 요소와 어덯게 연결 되는지, 뷰의 연결점(Anchor Point)와 대상(Target)을 연결합니다.
  • 버튼의 왼쪽 연결점을 부모 레이아웃의 벽면에 연결 하게 되면 부모 레이아웃이 타겟이 되어 연결점과 해당 타겟이 연결됩니다.

Anchor Point(연결점)

  • 왼쪽(left), 오른쪽(right), 위(top), 아래(down)
    • 왼쪽, 오른쪽이 start, end로 표기되기도 합니다.(xml)
  • 가로축의 가운데(CenterX),세로축의 가운데(CenterY)
  • 베이스라인 -> 텍스트를 보여주는 뷰인 경우에만 해당

Layout 속성

  • xml 파일에서 layout 의 속성이 여러가지 있습니다.
  • xmlns:android
    • 안드로이드 기본 SDK에 포함되어있는 속성을 사용함.
  • xmlns:app
    • 프로젝트에서 사용하는 외부라이브러리에 포함된 속성을 사용함.
  • xmlns:tools
    • 안들외드 스튜디오의 디자이너 도구 등에서 화면에 보여줄때 사용.
    • 이 속성은 앱이 실행될때는 적용되지 않고 안드로이드 스튜디오에서만 적용됨.
  • android: id
    • xml 레이아웃 파일 안에서 뷰를 구분할때 사용.
    • xml 레이아웃 파일에서 정의한 뷰를 자바 소스파일에서 찾을때.
    • 어이디 적용방법은 android:id="@+id/name"으로 합니다.
  • layout_constraint+++_to+++Of
    • +++ 표시 된곳에 Top,Bottom,Left,Rigth가 들어갑니다.
    • 버튼을 연결점을 이용해서 부모 레이아웃에 연결해보고 xml 파일에 들어가면 확인할 수 있습니다.
      • layout제약을 정할 물체제약의 타겟이 될 물체
      • 예를들어 버튼을 부모 레이아웃에 붙일때는 부모가 타겟이될 물체가 되고 버튼이 제약을 정할 물체가 됨.

LinearLayout

  • box 모델

  • 한 쪽 방향으로 차례대로 뷰를 추가하며 화면을 구성하는 방법
    뷰가 차지할 수 있는 사각형 영역을 할당

  • 박스모델이라고 칭하는 것은 박스처럼 한쪽 방향으로 쌓는것처럼 뷰가 차지하는 영역을 박스라고 보면됩니다.

  • 가로는 Horizontal, 세로는 Vertical 로 사용되고 속성이름은 orientation.

  • 가로방향은 왼쪽에서 오른쪽, 세로는 위쪽에서 아래쪽으로 쌓인다.

  • 리액트에 Flex 같았다.

RelativeLayout

  • 규칙 기반 모델

  • 부모 컨테이너나 다른 뷰와의 상대적 위치로 화면을 구성

  • 제약 레이아웃을 사용하게 되면서 상대 레이아웃은 권장하지 않음

  • 부모 레이아웃과의 상대적 위치 또는 같은 레이아웃 안에 들어 있는 다른 뷰와의 상대적 위치를 이용해 화면을 배치하는 레이아웃입니다.

  • 위젯을 위치 시킬때 layout_above(~보다 위), layout_below(~보다 아래)를 사용하여 속성 값으로 해당 id 값을 부여하여 위치시킵니다.

FrameLayout

  • 싱글 모델
  • 가장 상위에 있는 하나의 뷰 또는 뷰 그룹만 보여주는 방법
  • 여러 개의 뷰가 들어가면 중첩하여 쌓게됨. 가장 단순하지만 여러개의 뷰를 중첩한 후 각 뷰를 전환하여 보여주는 방식으로 자주 사용
  • 가장 위에 있는 뷰를 보이지 않게 하면 그 다음 뷰가 보입니다. 보이거나 보이지 않게 하는 속성이 가시성 속성입니다.
  • 속성의 이름은 visibility로 되어있으며 visible, invisible, gone 중 선택가능.
  • 프레임 레이아웃에 두가지 이미지뷰를 넣을시 첫 이미지는 visible로 해놔도 invisible이 되고 맨 마지막 이미지만 보입니다.
  • setVisibility를 사용하여 visibility속성을 바꿀수 있습니다.

TableLayout

  • 격자 모델
  • 격자 모양의 배열을 사용하여 화면을 구성하는 방법
  • HTML에서 많이 사용하는 정렬 방식과 유사하지만 많이 사용하지 않음
profile
힘들땐 블로그 하나더 적자!!![ Suyang ]

0개의 댓글