ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TECHIT 앱 스쿨 2기: Android 28일차 (23.06.07)
    [THEC!T] 앱 스쿨2기 : Android 2023. 6. 7. 23:32
    728x90

    자료 출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 내용

     

    오늘의 시작은 지난주에 알려주신 안드로이드의 동작원리에 대해서 설명해주시면서 시작하셨습니다.

     

    간단하게 설명하자면 AndroidManifest은 개발자가 안드로이드에게 해당 프로그램은 어떠한 프로그램인지 알려주는 용도이며 안드로이드는 해당 파일을 분석하여 <intent-filter> 이 있는 activity를 찾아 해당 activity의 name 속성의 클래스의 객체를 생성한 후 onCreate() 메서드를 호출합니다.

    이 때 setContentView 메서드에 관리할 화면을 지정하는데 res 폴더의 layout에 있는 xml 파일을 지정하게 됩니다.

     

    다음으로는 view에 대해서 설명해주셨습니다.

    안드로이드에서는 눈에 보이는 모든 요소를 View라고 부르며, 개발자가 배치하는 모든 View들은 Class로 제공되는데

    모두 View라는 클래스를 상속받고 있습니다.

    View클래스는 모든 UI 요소들의 부모클래스이며, Widget와 Layout으로 나뉘게 됩니다.

     

    Layout
    Container, View Group 이라고 부르기도 하며, 다른 뷰들을 포함하고 내부의 뷰를 통합 관리하고 내부 뷰들이 배치되는 

    모양을 결정한다.

     

    Widget

    문자열 입출렫 등 어떤 기능을 가지고 있고 사용자와 상호 작용을 하는 뷰들을 통칭해서 위젯이라고 부른다.

     

    다음으로는 뷰의 주요 속성들을 실습을 하며 설명을 해주셨습니다.

     

    id : xml이나 코드에서 view를 지칭하기 위해 사용하는 속성

    layout_width : View의 가로 길이

    layout_height : View의 세로 길이

    layout_margin : View의 외부 여백

    layout_padding : View의 내부 여백

    dp 단위 값
    wrap_content : 자기를 완벽하게 표현할 수 있는 최소 사이즈
    math_parent : 레이아웃 크기에 꽉 채운다.

     

    하기는 간략하게 그림으로 나타낸 것입니다.

    하기 그림을 만들면서 느낀게 정말 미적 센스가 없구나 라고 다시금 느끼게 되었습니다.......

     

    다음으로는 뷰 바인딩(View Binding)에 대해서 설명해주셨습니다.

    기존의 androidx 를 통하여 View의 주소값을 자동으로 받아오는 것은 Kotlin 밖에 되질 않아 이를 자바에서 사용할 수 있도록 추가한 라이브러리 입니다.

    res/layout 폴더에 있는 xml 파일 하나당 하나의 클래스가 만들어지며, 이 클래스에는 xml 파일이 가지고 있는 View들을 관리하는 기능이 들어가 있습니다. 이를 통하면 개발자가 View를 직접 추출하여 사용할 수 있고, 안드로이드 OS가 알아서 View를 추출하여 변수에 담아줍니다.
    자동으로 생성되는 클래스의 이름은 xml 파일의 이름으로 생성됩니니다.
    activity_main.xml -> ActivityMainBinding


    생성된 ViewBinding 객체에는 View의 ID와 동일한 이름의 변수가 만들어지고 그 변수에는 View 객체가 들어가 있다.

     

    사용방법은 

    1. app 수준의 gradle 파일에 다음과 같이 추가한다.

     

    2. 만약 ViewBinding 객체를 여러 함수에서 사용할 경우 지연초기화를 사용하여 변수를 생성 후 사용하는 방법

    2-1. onCreate() 내에서만 사용한다면 다르게도 작성이 가능하다.

     

     

    다음으로는 LinearLayout, RelativeLayout, ConstraintLayout 에 대하여 설명해주셨습니다.

     

    간단하게 설명하자면

     

    LinearLayout 

    방향성을 가지고 view를 배치하는 layout 

     

    LinearLayout 주요 속성


    horizontal : 좌측에서 우측으로
    vertical : 위에서 아래로

    layout_weight : 뷰가 차지할 크기 비율. 

    LinearLayout의 orientation  속성이 horizontal 이라면 가로크기를 조정하고 vertical 이면 세로 길이를 조정한다.

     

    RelativeLayout

    RelativeLayout나 다른  view 와의 관계를 설정하여 배치하는 layout이다
    RelativeLayout 에는 특별한 속성이 없지만 배치되는 view 들의 속성을 이용해 배치를 결정한다.

     

    RelativeLayout 주요 속성

     

    * 여기서 parent 는 RelativeLayout 을 의미함.

    layout_alignParentTop : 자신의 상단을 parent 의 상단 부분과 일치 시킨다.
    layout_alignParentBottom : 자신의 하단을 parent 의 하단 부분과 일치 시킨다.
    layout_alignParentLeft : 자신이 좌측 부분을 parent 의 좌측 부분과 일치 시킨다.
    layout_alignParentRight : 자신의 우측 부분을 parent 의 우측 부분과 일치 시킨다.
    layout_alignWithParentMissing : 다른 view 를 정렬 기준으로 설정하였을 경우 기준으로 설정한 view 가 없을 때는 parent 를 기준으로 정렬하게 된다.

     

    layout_centerHorizontal : 세로 방향의 중앙에 정렬한다.
    layout_centerVertical : 가로 방향의 중앙에 정렬된다.
    layout_centerInParent : 가로 세로 모두 중앙에 정렬된다.

     

    layout_alignTop : 자신의 상단 부분을 지정된 view 의 상단 부분에 일치 시킨다.
    layout_alignBottom : 자신의 하단 부분을 지정된 view 의 하단 부분에 일치 시킨다.
    layout_alignLeft : 자신의 좌측 부분을 지정된 view 의 좌측에 일치 시킨다.
    layout_alignRight : 자신의 우측 부분을 지정된 view 의 우측에 일치 시킨다.
    layout_alignBaseline : 자신의 Baseline 부분과 지정된 view 의 Baseline을 일치시킨다

     

    layout_above : 지정된 view 상단에 배치한다.
    layout_below : 지정된 view 하단에 배치한다.
    layout_toRightOf : 지정된 view 우측에 배치한다.
    layout_toLeftOf : 지정된 view 좌측에 배치한다.

     

     

    ConstraintLayout 

    ConstraintLayout 은 RelativeLayout 을 개선한 layout이며, RelativeLayout 보다 유연하게 화면을 구성할 수 있으며, RelativeLayout 처럼 부모와의 관계나 다른 View와의 관계를 설정하게된다.

     

    ConstraintLayout 제약조건

     

    1. 실선 제약 조건 : 지정된 기준으로부터 얼만큼 떨어진 위치에 있는지 좌표를 설정한다.

     

    2. 스프링 제약 조건 : 지정된 기준으로부터 얼만큼 떨어진 위치에 있는지 비율을 설정한다.

     

     

    강의가 끝난 후에는 깃허브에 코드를 올리고 내리고 폴더 째로 올리고 내리고 등 반복하며 깃허브에 익숙해 질 수 있도록 연습을 하였습니다. 아직 설명할 실력이 되지 못하고 조금 헷갈리는 부분들은 구글링을 통하여 알아가고 있으며, 추후 깃헙에 대한 내용도 작성할 수 있도록 하겠습니다.

     

     

    마무리 

    오늘 안드로이드에 대해서 기초부터 배우니 아무래도 독학을 했을 때의 찾아봤던 기억과 맞물리면서 이해가 잘 되는 듯한 기분이였습니다. 하지만 아직도 걱정거리는 남아 있습니다. 지금까지 지나간 시간들을 생각해 봤을 때 프로젝트를 진행하는 것도 금방 다가올거라고 생각하기 때문입니다. 이외에도 생각해보면 걱정거리는 많습니다. 하지만 걱정거리들을 곰곰히 생각해보면 불확실한 미래에 대한 걱정에서 나오는 것 같습니다. 그렇기에 그런 걱정거리가 떠오를 수록 일단 현재 할 수 있는 일들에 대해서 최선을 다하며 대비를 해야할 것 같습니다. 

     

    오늘의 마음가짐

    미래를 걱정하며 현재를 망치지 말자

     

Designed by Tistory.