오늘 계획
⏲️ 공부시간 10 : 40 ~ 14 : 40
화면을 구성하는 가장 기본적인 UI
모든 Activity는 Android Manifest 파일에 등록되어야함
일종의 메시지 객체로 다른앱 구성요소로 작업을 요청 할 수있다.
명시적 인텐트(Explicit Intent)
암시적 인텐트(Implicit Intent)
컴포넌트 이름(ComponentName) (명시적 인텐트일때)
인텐트를 처리하는 타겟 컴포넌트 이름
작업 (Action)
수행되어야할 작업을 나타내는 문자열
데이터 (Data)
작업에 필요한 데이터(URI형식)
카테고리(Category)
작업에 대한 추가적인 정보 제공
엑스트라(Exctra)
요청한 작업을 수행하기 위해 필요한 추가 정보를 담고있는 키-값 쌍의 데이터
리소스를 고유하게 식별하기 위한 문자열.
URL 과 URN을 포함하는 개념
URI는 스킴, 호스트, 경로, 쿼리, 프래그먼트 로 이루어져있음
URI 예시
| 스킴 | https | 리소스에 접근하는 방법 정의 |
|---|---|---|
| 호스트 | www.example.com | 리소스가 위치한 서버의 도메인 이름 |
| 경로 | /search | 서버 내의 특정 리소스 지정 |
| 쿼리 | q=URI+example | 리소스에 대한 추가 매개변수 지정 |
| ’q’ 는 검색 쿼리 매개변수 | ||
| 프래그먼트 | #section1 | 리소스 내의 특정 부분 식별 |
file:///C:/path/to/file.txtmailto:example@example.comtel:+1234567890geo:37.7749,-122.4194스킴 종류
등등 여러 종류가 있고,
URI 스킴의 전체 목록은 IANA (Internet Assigned Numbers Authority)에서 관리하며,
IANA의 URI 스킴 목록에서 다양한 스킴을 확인할 수 있음
문자열로 표현된 URI를 Uri 객체로 변환해주는 함수
val uriString = "https://www.example.com/search?q=URI+example#section1"
val uri = Uri.parse(uriString)
명시적 인텐트 예시
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
암시적 인텐트 예시
fun doOnBtnClick(view : View) {
when (view.getId()) {
R.id.buttonDialActivity -> {
val call_intent = Intennt(Intetn.ACTION_DIAL, Uri.parse("tel:114"))
startActivity(call_intent)
}
}
}
암시적 인텐트 수신하는 방법
manifest 파일에 를 선언해줘야함
인텐트 필터 예시
<intent-filter>
<action android:name="android.intent.action.DIAL" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
</intent-filter>
화면 닫을 때 → finish()메서드 이용
강의보고 궁금한 점
인텐트의 액션의 종류는 어떤게 있지??
→ 생각대로 엄청 많은데, 자주 쓰는 애들은
ACTION_VIEW : 주어진 URI를 보기 위해 사용 (EX. 웹페이지 열기, 연락처 보여주기 등)
ACTION_EDIT : 주어진 URI의 데이터 편집
ACTION_INSERT : 주어진 URI에 새로운 데이터 삽입
ACTION_SEND : 데이터를 다른 앱으로 보냄
ACTION_SENDTO : 특정 주소로 데이터를 보냄 (EX. 이메일주소나 전화번호로 데이터 전송)
ACTION_ANSWER : 전화받기
ACTION_PICK : 사용자가 선택한 항목을 가져옴
ACTION_CHOOSER : 사용자가 선택할 수 있는 인텐트 표시
ACTION_MAIN : 애플리케이션의 메인 액티비티 시작
ACTION_DIAL : 주어진 전화번호 다이얼
ACTION_CALL : 주어진 전화번호로 전화를 검
ACTION_SEARCH : 검색 쿼리 실행
등등
필요에 따라 API 레퍼런스 확인해서 적절한 액션을 찾아야할듯
인텐트 액션을 따로 내가 만들어서 쓰기도 하나?
→표준 액션 외에 사용자 정의 액션 정의가능
→동일한 개발자가 만든 여러 앱간의 통신을 위해서는 커스텀 인텐트액션을 만들어서 사용할 수도 있다~~
→ 만약 다른 개발자와 커스텀 액션을 공유하고싶으면, 문서화해서 README파일이나 API문서에 해당 정보를 포함시켜서 설명하기도 함
Activity launched : 새로운 Activity가 시작될 때 호출
Activity running : Activity가 현재 실행중이고 사용자와 상호작용 하고있는 상태
Another activity comes into foregound : 다른 Activity가 Foreground로 올라오면 현재 Activity가 백그라운드로 이동
User returns to the activity : 사용자가 다시 해당 액티비티로 돌아오면 호출
The activity is finishing or being destroyed by the system : Activity가 종료되거나 시스템에 의해 파괴될 때 호출
Activity shut down : Activity가 완전히 종료된 상태
App process killed : 시스템이 메모리를 필요로 할 때 앱 프로세스를 종료시킬 수 있음
onCreate() 호출과 onDestroy()호출 동안
onStart() ~ onStop() 호출 사이동안 사용자가 액티비티를 화면에서 보고 상호작용 할 수 있음
onResume() ~ onPause() 호출 사이에는 해당 액티비티가 다른 모든 액티비티 앞에 표시
액티비티가 생성되면서 해제될 때 까지 액티비티 상태에 따라서 불려지는 메서드
개발자가 필요에 따라 콜백 메서드를 재정의하여 필요한일을 수행하게 할 수 있음

액티비티 수명주기에 따른 상태 시각적으로 정리
⏲️ 공부시간 15 : 10 ~ 18 : 15
UI 어떻게 만들지 고민하면서 레퍼런스 찾아보고
시작하기전에 필요한 것들 준비했음!
앱이름은 오리너구리 월드로 하고,
심플하고 미니멀한 컨셉으로 가야겠다고 생각했음
원래 로고를 사용할까 했는데,
UI 레퍼런스를 찾아보다가 보니
컬러를 전체적으로 무채색만 사용하고,
라인아트로 된 이미지가 들어가면 컨셉이랑 잘 어울리겠다고 생각했음
폰트는 국룰폰트 Pretendard로 정함!
심플하고 미니멀한 컨셉이기 때문에
계산기 앱처럼 버튼 따로 디자인안하고 안드로이드 스튜디오에서 구현해도 될 것 같아서
오리너구리를 라인아트로 그린 일러스트만 제작했다

제작한 일러스트!
일러스트 툴을 사용해서 만들어서 PNG로 뽑아놨당

그리고 혹시 로고가 필요하다면 계산기때 만들어놨던 로고로 사용할 예정!
시간이 널널해서 폰트 밸류나 색상 정할겸 일러스트로 페이지를 미리 만들어봤다.



블랙/화이트 랑 미니멀 컨셉이 잘 살려지는게 좋겠다고 생각하면서 만들었는데
지금 또 다시보니까 정보보는 페이지에 네모박스가 회색이라 혼자 안어울리는 것 같음
실제로 제작할 때는 바꿔야할듯?
일러스트 너무 대충 그려서 좀 타자치는 오리너구리에 키보드가 너무 튀는거같지만 일단은 그대로 진행하고 과제 끝나고 시간이되면 수정하던가 해야겠음
아무튼 페이지 만들어보면서 어느정도 폰트 밸류를 정했당!
font : Pretendard
Title : 72pt , ExtraBold 자간 10 black #000000
굵은 글씨 : 40pt, Bold 자간 50
연한 글씨 : 40pt, Light #777777
Button글씨 : 50 pt, Regular
근데 왤캐 크게해야하지???원래 모바일 폰트 저렇게 안클텐데 ?
나 대지 사이즈 폰 크기로 해놓고했는디? 먼가 잘못된거같다.
스튜디오에서 작업시작하고 폰트크기부터 확인해봐야겠음