탐비의 개발 낙서장

[Android] 안드로이드 View 클래스 본문

프로그래밍/Android

[Android] 안드로이드 View 클래스

탐비_ 2021. 8. 10. 23:58
View와 View Group

 

http://weibeld.net/android/view-hierarchy.html

 

View

 안드로이드 뷰는 모두 Object를 상속받은 View라는 클래스를 상속받아 만들어진 클래스들입니다. 화면에 보이는 요소들은 반드시 View를 상속받아야 하며, 모습과 기능에 대한 정보만 가지고 있어 화면 어디에 자신이 그려져야 하는지에 대한 정보는 가지고 있지 않습니다.

 이러한 View들을 화면에 배치하기 위해서 필요한 것이 ViewGroup입니다.

 

ViewGroup

 ViewGroup들 역시 화면에 보이는 요소로, View를 상속받아 만들어져 있습니다. 다양한 종류의 View들 처럼 ViewGroup들 역시 각각 고유한 배치방식을 가지는데, 수평/수직으로 선형으로 배치하는 LinearLayout, View간에 관계로 화면에 배치하는 RelativeLayout 등 다양한 종류의 ViewGroup에 View들을 배치하게 됩니다.

 

 

 

View Transform

 

이동

 안드로이드에서 View의 이동은 상대좌표를 고려해야합니다. getX() 함수와 getY() 함수를 이용하면 이벤트가 발생했을 때 순간의 절대 좌표가 아닌 상대 좌표를 반환합니다. 

 즉, 정확한 이동을 위해서는 View의 원래 좌표 + 이동한 거리를 해야 원하는 위치로 이동이 가능합니다.

 

회전

 회전 역시 X축과 Y축을 설정하여 해당 축에 따라서 상대적인 각도로 회전하도록 되어있습니다.

 

 

 

반응형 레이아웃

 

 반응형 레이아웃을 사용하는 이유는 사용자의 입장에서 생각하여, 어느 기기에서 콘텐츠를 이용하던지 적절한 화면으로 볼 수 있고 개발자의 입장에서는 기기마다 따로 웹페이지를 개발하지 않아도 되므로 비용을 절감할 수 있게 됩니다.

 

 하지만 복잡한 콘텐츠를 가진 웹사이트나 서비스 같은 경우에는 반응형 레이아웃으로 구성하게 되면 사용자에게 일관된 사용 경험을 줄 수 없기 때문에 네이버나 다음과 같은 유명 포털의 경우에는 사용하지 않고 별도로 모바일 페이지를 가지는 등으로 처리되어 있습니다.

 

ConstraintLayout

 안드로이드에서 반응형 레이아웃을 구성하는데 최적화된 ViewGroup입니다. ViewGroup과 View / View와 View 간에 서로 Constraint라는 관계를 지정하여 화면의 크기가 달라져도 일정한 비율을 유지하도록 반응형으로 만들거나 하는 등에 많이 사용되고 있습니다.

 

# 구현한 Frame과 다른점

- 제약조건(Constraint) 별 편향이 존재함

- 크기를 완전 고정 / 확장 됨 / 제약 조건과 일치 등의 다양한 옵션이 존재함

- 서로간에 체인을 걸수 있음