코딩/Android

Android Studio 뷰, 레이아웃 (Do it 안드로이드 앱 프로그래밍)

View
화면에 보이는 각각의 것들 버튼, 텍스트 등등
흔히 control이나 Widget이라 불리는 UI 구성 요소

View Group
뷰들을 여러 개 포함하고 있는 것
뷰 그룹도 뷰에서 상속하여 뷰가 됨. 즉 위의 뷰는 버튼, 텍스트 뿐만 아니라 이것들을 포함하는 눈에 보이지 않는 영역을 포함

Widget
뷰 중에서 일반적인 컨트롤의 역할
버튼, 텍스트 등등

Layout
뷰 그룹 중에서 내부에 뷰들을 포함하고 있으면서 그것들을 배치하는 역할

상속 
부모의 특성을 그대로 물려받는 것, 변수나 메소드 재사용 가능

액티비티 상속
처음 만들어본 액티비티에서 extends 키워드 사용
ex) public class MainActivity extends AppcompatActivity

부모 클래스의 메소드를 재정의
onCreate()등의 메소드는 이미 부모 클래스에 정의되어 있어서 사용 가능
기능을 추가하고 싶을 때 Override

this와 super 
나 자신은 this 부모는 super를 사용해 변수나 메소드 참조

Activity가 생성될 때 onCreate()호출
super.onCreate()를 호출하여 Activity 클래스에 정의된 onCreate()메소드의 기능을 사용

Activity Manager 가 자동으로 만들어줌.


XML 레이아웃의 구성
<시작 태그
 속성1="속성값1"
 속성2="속성값2"
...
</끝 태그>
<TextView
 위젯 과 같은 눈에 보이는 것들은 대부분 이런 형식
 />

<android.support.constraint.ConstraintLayout
 눈에 보이지 않으면서 다른 것들을 담아놓는 형식
</android.support.constraint.ConstraintLayout>

wrap_content
안에 있는 내용에 따라 크기가 변함. 
match_parent
부모의 크기만큼

margin 
뷰와 뷰의 공간을 띄어줌

px 단말기마다 크기가 달라짐
dp 각각 단말기 화면에 크기를 맞춰줌

대표적인 레이아웃 :

ConstraintLayout
제약(Constraint) 조건을 사용해 화면을 구성하는 방법
안드로이드 스튜디오 디폴트 레이아웃
연결선, 연결점 뷰가 어느 곳에 위치할지..

LinearLayout
박스(Box) 모델
한 쪽 방향으로 차례대로 뷰를 추가하며 화면을 구성하는 방법
뷰가 차지할 수 있는 시각형 영역을 할당

RelativeLayout
규칙(Rule) 기반 모델
부모 컨테이너나 다른 뷰와의 상대적 위치로 화면을 구성하는 방법

FrameLayout
싱글(Single) 모델
가장 상위에 있는 하나의 뷰 또는 뷰그룹만 보여주는 방법
여러 개의 뷰가 들어가면 중첩하여 쌓게 됨. 가장 단순하지만 여러 개의 뷰를 중첩한 후 
각 뷰를 전환하여 보여주는 방식으로 주로 사용

TableLayout
격자(Grid) 모델
격자 모양의 배열을 사용하여 화면을 구성하는 방법
HTML에서 많이 사용하는 정렬 방식과 유사하지만 많이 사용하지 않음

 

 

리니어 레이아웃

orientation 속성이 필수

layout_gravity 정렬 

gravity 뷰 안에 속성 정렬

 

상대 레이아웃

제약과 거의 비슷 근데 연결선을 사용하지 않음. 

대신 속성을 부여해 배치

 

프레임 레이아웃

Visibility라는 속성으로 어떤 걸 보여줄지 결정 가능

 

테이블 레이아웃

자주 사용하지는 않는다.

 

LinearLayout 실습 :

 

실습 중 몰랏던 것 :

baselineAligned
글자크기를 바꾸거나 뷰의 크기가 조정될때
글자가 보이는 가로방향의 같은 선위에 글자가 표시되게 해줌