📌 학습 목표
- Platform에 대해서 설명할 수 있다.
- Android에 대해서 설명할 수 있다.
- Api에 대해서 설명할 수 있다.
- 공식 문서의 중요성을 이해한다.
📝 Standard Mission
1. 본인만의 기준을 세워 Manifest 항목 전부 조사
❗manifest의 존재 이유
manifest 파일은 Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수 정보를 설명한다. 그래서 모든 앱 프로젝트는 프로젝트 소스 세트의 루트에 AndroidManifest.xml 파일(정확히 이 이름)이 있어야 한다.
앱 매니페스트 개요 | Android 개발자 | Android Developers
앱 매니페스트 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 모든 앱 프로젝트는 프로젝트 소스 세트의 루트에 AndroidManifest.xml 파일(정확히 이 이름)
developer.android.com
❗Manifest의 주요 속성 10가지
1. <manifest>
AndroidManifest.xml 파일의 루트 요소로 단 하나의 <application> 요소를 포함해야 한다. 네임스페이스를 지정해주는 xmlns:android 속성 , package 속성을 지정한다.
2. <application>
매니페스트 파일에는 단 하나의 <application> 요소를 포함해야 한다. 이 요소는 애플리케이션의 각 구성요소를 선언하고 모든 구성요소에 영향을 줄 수 있는 속성을 가진 하위 요소를 포함한다.
3. <activity>
안드로이드 애플리케이션을 구성하는 component 중 activity를 정의한다. 애플리케이션의 시각적 사용자 인터페이스 요소를 구현하는 액티비티(Activity 하위 클래스)를 선언한다. 모든 액티비티는 매니페스트 파일의 <activity> 요소를 나타내야 한다. 거기에 선언되지 않은 액티비티는 시스템에서 표시되지 않으며 실행되지 않는다.
4.<service>
안드로이드 애플리케이션을 구성하는 component 중 service를 정의한다. Activity와 달리, 서비스는 시각적 사용자 인터페이스가 없다. 서비스는 오래 실행되는 백그라운드 작업이나 다른 애플리케이션에서 호출할 수 있는 리치 커뮤니케이션 API를 구현하는 데 사용한다. 모든 서비스는 매니페스트 파일의 <service> 요소로 나타내야 한다. 또한 activity와 마찬가지로 여기에 선언되지 않은 서비스는 시스템에 표시되지 않으며 실행되지 않는다.
5. <receiver>
안드로이드 애플리케이션을 구성하는 component 중 broadcast receiver을 정의한다. broadcast receiver를 사용하면 애플리케이션의 다른 구성요소가 실행되고 있지 않을 때도 시스템이나 다른 애플리케이션에서 브로드캐스트팅하는 인텐트를 애플리케이션에서 수신할 수 있다.<receiver> 태그 안에 intent filter을 정의하여 어떠한 브로드캐스트 메시지에 반응할지를 지정할 수 있다.
6. <provider>
안드로이드 애플리케이션을 구성하는 component 중 content provider 을 정의한다. content provider는 어플리케이션 내의 데이터베이스를 다른 애플리케이션가 공유할 수 있도록 해주는 역할을 한다. 애플리케이션의 모든 content provider은 manifest 파일의 <provider> 요소에서 정의해야 한다. 그러지 않으면 시스템에서 인식되지 않고 실행되지 않는다.
7. <intent-filter>
Activity, Service, Broadcast Receiver가 응답할 수 있는 인텐트의 유형을 지정한다. 인텐트 필터는 상위 구성요소의 기능, 즉 활동이나 서비스가 할 수 있는 작업과 수신기가 처리할 수 있는 브로드캐스트의 유형을 선언한다. 전달되는 유형의 수신 인텐트로 구성요소를 열고 이 구성요소에 유의미하지 않은 인텐트를 필터링한다.
8. <action>
intent filter에 작업을 추가합니다. <intent-filter> 요소에 <action> 요소가 하나 이상 포함되어야 한다. 인텐트 필터에 <action> 요소가 없으면 필터가 Intent 객체를 허용하지 않는다.
9. <category>
<intent filter> 밑에 <category> 요소를 정의하여 component의 유형이 무엇인지 정의할 수 있다.
10. <uses-permission>
앱이 올바르게 작동하기 위해 사용자가 반드시 부여해야 하는 시스템 권한이다. 여기에 정의된 권한은 애플리케이션 설치시 해당 어플리케이션이 어떤 권한을 요구하는지를 사용자에게 보여준다.
[android] 매니페스트 주요 속성 10가지
매니페스트 파일은 Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수 정보를 설명합니다. 매니페스트 주요 속성 1. 구문: 설명 : AndroidManifest.xml 파일의 루트 요소로 단 하나의 요.
yesiamnahee.tistory.com
❗4대 컴포넌트 및 이 파일을 통해서 어떤 정보를 나타낼 수 있는지 (적용할 수 있는지)
주요 4개 컴포넌트라고 하면 Activity, Service, Broadcast Receiver, Content Provider을 말한다. 이 중 가장 많이 사용하는 것은 Activity지만 나머지 컴포넌트들도 매우 중요하므로 어떤 기능을 하는지 알아둬야 한다.
컴포넌트는 어플리케이션을 이루고 있는 구성요소들이다. 따라서 컴포넌트들을 Manifest 파일에 적어줌으로써, 안드로이드 시스템이 어떤 컴포넌트를 사용하고 있는지 알도록 해야 애플리케이션이 실행된다. 즉, 어떤 컴포넌트 요소를, 또 어떤 클래스를 이용하여 생성했는지 알려주는 지시서가 있어야 안드로이드에서 객체들을 만들고 실행시켜 줄 수 있다.
- Activity
애플리케이션에서 사용자에게 보이는 화면을 담당하는 컴포넌트이다. 화면뿐만 아니라 화면에서 일어나는 사용자와의 상호작용도 액티비티가 관여한다. 여러 개의 액티비티가 모여서 하나의 애플리케이션을 구성한다.
- 일반적으로 하나의 스크린을 나타낸다.
- 어플리케이션은 반드시 하나의 activity를 가지고 있어야 한다.
- 각 activity는 AndroidManifest에 등록되어 있어야 한다.
- 하나 이상의 view를 가질 수 있다.
- Service
서비스(Service 서브클래스)를 애플리케이션의 구성요소 중 하나로 선언한다. 활동과 달리 서비스는 시각적 사용자 인터페이스가 없다(UI). 서비스는 오래 실행되는 백그라운드 작업이나 다른 애플리케이션에서 호출할 수 있는 리치 커뮤니케이션 API를 구현하는 데 사용한다.
- UI가 없다.
- 한 번 시작된 Service는 애플리케이션이 종료되고 다른 애플리케이션으로 이동해서 계속 백그라운드에서 실행된다.
- Broadcast Receiver
브로드캐스팅 메시지를 여러 애플리케이션에 전달할 수 있는데, 이때 브로드캐스트 수신자를 등록한 앱은 이 메시지를 전달받을 수 있다.
- 메시지를 여러 객체에 전달하는 것을 말한다.(1 대 다)
ex) 시스템 부팅, 배터리 부족, 전화, 문자 수신
- Content Provider
애플리케이션 사이에 데이터 공유가 가능하도록 하는 컴포넌트이다. 내용 제공자를 통해 주소록에 접근하거나, 갤러리에 접근이 가능하다. 콘텐츠 제공자는 파일 시스템, SQLite 데이터베이스, 기타 스토리지 등을 관리 및 제공한다.
- 데이터를 쿼리하거나 변경이 가능하다.
ex) 다른 어플리케이션 데이터를 제공하는 컴포넌트이다.
[Android] 안드로이드 4대 컴포넌트
안드로이드 애플리케이션을 구성하는 기본 요소 4가지를 안드로이드 4대 컴포넌트라고 한다. 이 4가지는 액티비티(Activity), 서비스(Service), 브로드캐스트 수신자(Broadcast Receiver), 콘텐츠 제공자(Con
lotuslee.tistory.com
2. Palette에서 자주 사용되는 View들 조사
- TextView 화면에 텍스트를 표시하는 기능
- Button 사용자가 탭하거나 클릭하여 작업을 수행할 수 있는 사용자 인터페이스 요소
MainActivity에서 setOnClickListener로 버튼을 누르면 어떤 작업을 할 것인지 설정할 수 있음 - ImageView View의 속성을 상속받아 공간 안에 사진을 넣음
- RecyclerView 스크롤이 가능한 컨테이너에 여러 개의 뷰를 담아서 보여주는 뷰 그룹
- FragmentContainerView FragmentContainerView는 Fragment를 포함하는 레이아웃으로 최적화된 클래스이다.
Fragment가 포함되는 레이아웃으로 Fragment 대신 Fragment 전용 컨테이너로 사용되는 FragmentContainerView 클래스를 사용한다. - ScrollView 수직(위아래)로 스크롤하는 기능, 하나의 위젯만 가능
- Switch 텍스트 오른쪽에 스위치 생성
- ImageButton 사용자가 누르거나 클릭할 수 있는 이미지 버튼을 표시
- ChipGroup & Chip 다수의 chip을 관리할 수 있는 컴포넌트 & 워드 혹은 카테고리, 요소, 타입 등을 표현할 때 종종 타원형의 background에 그 텍스트를 표현하는 버튼
- CheckBox 선택 또는 선택 해제할 수 있는 체크박스 유형의 상태 버튼
- RadioGroup & RadioButton 라디오 그룹을 사용하면 세트에서 하나의 옵션을 선택 & 원형으로 된 체크박스
- FloatingActionButton UI 위에 원형의 떠 있는 듯한 버튼, 버튼을 활용하여 특수 동작 기능 넣을 수 있음
- WebView View의 속성을 상속받아 특정한 url과 연결된 뷰를 넣음
각 OS별 내장된 웹 브라우저를 뷰 형태로 앱에서 표현 - ProgressBar 진행상황을 알려주는 원형의 컴포넌트
- SeekBar 드래그 가능한 썸을 추가하는 ProgressBar의 확장 위젯
- Spinner 여러 개의 값 중 1개를 선택하기 위해 사용하는 안드로이드에서 제공해주는 기본 위젯
- HorizontalScrollView 수평으로 나눔
- NestedScrollView 한 화면에 여러 개의 스크롤을 사용할 때
[android] 팔레트(palette) 전부 정리
팔레트 메뉴에는 Common(자주 사용하는 컴포넌트들)/ Text/ Buttons/ Widgets/ Layout/ Container/ Google(구글에서 지원하는 광고 판, 맵 뷰) 의 하위 카테고리가 존재합니다. 1. Text >> TextView 화면에 텍스..
yesiamnahee.tistory.com
3. Layout 6가지 조사
각 Layout이 어떤 화면을 구축할 때, 어떤 경우에 사용하는지 조사
❗Linear
LinearLayout은 Linear(선형, 선으로 된)라는 단어가 포함하는 의미대로, 여러 View 위젯들을 가로 또는 세로 방향으로 나열할 때 사용하는 Layout 클래스이다. LinearLayout의 자식(Children)으로 배치되는 View 위젯들은 오직 한 방향 (가로 또는 세로)으로만 배치가 가능하기 때문에 위젯의 크기(높이 또는 너비)와 관계없이 한 줄로만 배열된다. 또한 자식들은 중첩(overrap)되지 않고, 지정한 방향으로 쌓이는(stacked) 형태로 표시된다.
- android:orientation 방향 설정
- android:weight 자식 View가 차지할 비율 설정
(LinearLayout에 넣는 것이 아닌 하위 View에 넣어야 한다.)
❗Relative
자식(Children) View 위젯들이 서로 간의 상대적 배치 관계에 따라 화면에 표시될 위치가 결정되도록 만들어주는 Layout 클래스다. 알기 쉽게 예를 들자면, "A를 화면에 표시하고 B는 A의 오른쪽에 표시"하거나, "C를 첫 번째 자식으로 두고 D가 C 아래에 위치하도록 배치"하는 경우다.
- ConstraintLayout 사용 권장
거의 똑같은 기능이 더 효율적으로 구현 되어있기 때문이다.
❗Frame
FrameLayout은 주로 하나의 자식 View 위젯만 표시할 때 사용하는 Layout 클래스다. 하지만 오직 하나의 자식 View 위젯만 가질 수 있다는 의미는 아니다. FrameLayout에 여러 View 위젯을 자식으로 추가하면 겹쳐진 형태로 표시되며, 가장 최근에 추가된 View 위젯이 가장 상위(on top)에 표시된다. 이러한 특징을 이용해 가장 상위의 View 위젯만 표시하고 나머지는 보이지 않게 만듦으로써 하나의 자식 View만 표시되도록 만든다.
❗Table
TableLayout은 자식(Children) View 위젯들을 테이블(행과 열로 구성)로 나누어 표시하는 Layout 클래스이다. HTML에서의 "<table>", "<tr>", "<td>" 태그를 사용하는 것과 매우 유사하지만, 행(Row)을 Span 할 수 없다는 것(=두 개 이상의 행(Row) 합치기 허용 안됨)과 "<td>" 역할을 하는 클래스가 별도로 존재하지 않는 것이 차이점이라 할 수 있다. <TableRow>를 통해 열을 배치할 수 있다.
- android:stretchColumns 열을 최대로 넓힘
(특정 열을 지정하거나, *로 모든 열을 최대로 넓힘)
- android:weight 자식 View가 차지할 비율 설정
(TableLayout에 넣는 것이 아닌 하위 View에 넣어야 함)
❗Grid
TableLayout보다 유연하게 Table 형태로 배치할 수 있는 Layout이다. GridView의 경우, 클래스 이름에 "Layout"이라는 단어가 포함되지 않고 위에서 언급한 보편적인 Layout들과 사용 방법이 달라 Layout이 아닌 것으로 착각할 수도 있지만, 엄연히 ViewGroup으로부터 상속받은 Layout 클래스의 한 종류다. 특히, 동일한 자식(Children) View 위젯을, 내용만 달리하여 반복적으로 표시해야 하는 경우 ListView와 GridView가 매우 유용하게 사용될 수 있다.
- android:rowCount 행의 개수 지정
- android:columnCount 열의 개수 지정
❗Constraint
ConstraintLayout을 사용하면 플랫 뷰 계층 구조(중첩 뷰 그룹이 없음)로 크고 복잡한 레이아웃을 만들 수 있다. 동위 보기와 상위 레이아웃 사이의 관계에 따라 모든 보기의 레이아웃이 결정된다는 점에서 RelativeLayout과 비슷하지만, RelativeLayout보다 유연하고 Android 스튜디오의 Layout Editor와 함께 사용하기가 더 쉽다. 그래서 대부분의 경우에 가장 권장되는 Layout이며 앞서 나온 Layout 모두를 대체 가능하다. 중첩 최소화 레이아웃이다. 중첩이 된다면 수정하기 매우 어려워지기 때문이다.
- 필수 사항
왼쪽 (start) - 오른쪽 (end) 중 한 쪽 이상, 위 (top) - 아래 (bottom) 중 한 쪽 이상 제약을 걸어줘야 올바르게 표시된다.
안드로이드 레이아웃 (Android Layout)
1. 안드로이드 Layout 클래스 안드로이드 Layout 클래스는 View 위젯들을 화면에 배치하는 과정에서, 위젯의 위치를 정렬하거나, 연관된 위젯들을 그룹화하는 역할을 수행합니다. 즉, Layout 클래스는 V
recipes4dev.tistory.com
ConstraintLayout으로 반응형 UI 빌드 | Android 개발자 | Android Developers
컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. ConstraintLayout으로 반응형 UI 빌드 Android Jetpack의 구성요소 ConstraintLayout을 사용하면 플랫 뷰 계층 구조(중첩
developer.android.com
📝 Challenge Mission
6가지 Layout을 모두 사용하여 자유롭게 화면 만들어보기
- 구현 방법은 자유 (한꺼번에 or 하나씩 or 몇 개씩 등..)
- 화면 하나 당 하나의 Layout을 사용하거나, 혹은 하나의 화면에 모든 Layout을 다 사용해보기
- 각 레이아웃들이 어떤 특징이 있고, 이러한 특징이 있어 활용했다는 명확한 이유가 있어야 함
- 기기 별 해상도마다 View가 다르게 보일 수 있다는 점을 고려하여 여러 해상도에 대응할 수 있도록 Layout 구현
- 아이디어가 생각나지 않는다면 자신이 사용했던 앱의 화면들을 따라 해서 구현
Android 1주차 워크북 (OT & Platform)
📚 학습목표
www.notion.so
'🍞 대외활동 > Univ Makeus Challenge' 카테고리의 다른 글
[UMC] Android 2주차 워크북 (Layout) - 유튜브 (0) | 2022.10.02 |
---|---|
[UMC] Android 2주차 워크북 (Layout) - 인스타그램 (0) | 2022.10.02 |
[UMC] Android 2주차 워크북 (Layout) - 당근마켓 (0) | 2022.10.01 |
[UMC] Android 2주차 워크북 (Layout) (0) | 2022.10.01 |
[UMC] 가톨릭대 3기 최종 합격 후기 (1차 서류, 2차 면접) (0) | 2022.09.12 |