앱개발 심화 과제 선택 과제 구현 구현사항- 공통 - MainActivity의 하단 메뉴를 Bottom Navigation 또는 ViewPager+tablayout으로 변경 - MVVM 패턴을 적용합니다. (ViewModel, LiveData) - 검색 결과 화면은 보관함을 다녀와도 유지됩니다. - 보관한 이미지 리스트는 앱 재시작 후 다시 보여야 합니다. - 첫 번째 fragment : 검색 결과 - 검색은 키워드 하나에 이미지 검색과 동영상 검색을 동시에 사용, 두 검색 결과를 합친 리스트를 사용합니다. - 두 검색 결과를 datetime 필드를 이용해 정렬하여 출력합니다. (최신부터 나타나도록) - 검색 결과 아이템에 [이미지] 또는 [동영상]를 표시합니다..
앱개발 심화 과제 필수 과제 구현 구현 사항// 이미지 검색 Fragment- 검색어를 입력할 수 있도록 검색창을 구현합니다.- 검색어를 입력하고 검색 버튼을 누르면 검색된 이미지 리스트를 보여줍니다.- 검색 버튼을 누르면 키보드는 숨김 처리하도록 구현합니다.- API 검색 결과에서 thumbnail_url, display_sitename, datetime을 받아오도록 구현 합니다.- RecyclerView의 각 아이템 레이아웃을 썸네일 이미지, 사이트이름, 날짜 시간 으로 구현 합니다.- API 검색 결과를 RecyclerView에 표시하도록 구현합니다.- 날짜 시간은 "yyyy-MM-dd HH:mm:ss" 포멧으로 노출되도록 구현합니다.- 검색 결과는 최대 80개까지만 표시하도록 구현합니다.- 리스트..
앱개발 심화 1주차 정리 - 4 안드로이드 디버깅 Log 찍어보기- Log.v(String tag, String msg): Verbose - 매우 낮은 우선순위의 로그 메시지에 사용됩니다.- Log.d(String tag, String msg): Debug - 디버깅 목적으로 사용됩니다.- Log.i(String tag, String msg): Info - 일반적인 정보를 나타내기 위해 사용됩니다.- Log.w(String tag, String msg): Warn - 경고나 예상치 못한 상황을 나타낼 때 사용됩니다.- Log.e(String tag, String msg): Error - 심각한 오류를 보고할 때 사용됩니다.- Log.wtf(String tag, String msg): What a Terr..
챌린지반 7주차 세션 정리 의존성 주입의 개념 해당 자동차 클래스는 엔진이라는 인스턴스를 자동차 내에서 생성한다.여기서 좀 더 유연한 클래스를 작성하고 싶다면 바깥에서 엔진을 주입하도록 해야된다. 해당 클래스는 엔진 인스턴스를 외부에서 주입받도록 설계되었다.이를 의존성 주입(DI - Dependency Injection)이라고 한다. 자동차 클래스의 엔진은 생성자를 통해 인스턴스로 주입받기에 자동차의 엔진은클래스 외부에서 수정이 가능하게 되며 이로 클래스의 모듈화가 쉬워지게 된다. 의존성 주입의 문제점각 클래스들이 서로 이런식으로 의존하도록 설계되어있을 때 뷰모델 인스턴스를 하나 생성하려면 관련된 모든 클래스의 인스턴스를생성해야하기에 코드의 간결성이 심하게 저해되는 문제점이 존재한다. 의존성 주입..
Compose 특강 3회차 정리 Recompostion Compose의 UI 업데이트@Composablefun ClickCounter(clicks: Int, onClick: () -> Unit) { Button(onClick = onClick) { Text("I've been clicked $clicks times") }}명령형 UI는 코드 내부에 위치한 setter를 호출하여 위젯을 변경하지만 선언형 UI는 데이터 변경을 감지할 때 Composable 함수를 재호출하여 UI를 다시 그린다. Recomposition이란 Compose에서 UI가 변경될 때 다시 그려지는 과정을 뜻한다. State 상호작용방식 Compose에선 screen과 content가 서로 state와 eve..
앱개발 심화 1주차 정리 - 3 서버/클라이언트 개념 서버와 클라이언트 서버는 데이터나 리소스를 제공하는 시스템으로클라이언트의 요청을 처리해 그에 맞는 응답을 반환한다. 클라이언트는 사용자를 대표해 서버에 요청을 보내며그에 대한 응답을 받는 장치 및 프로그램에 해당한다. 3 - Tier 아키텍쳐 서버는 클라이언트에게 요청을 받으면 요청사항에 맞는 데이터를 데이터베이스에서 꺼내어 클라이언트에게 전달한다. 프로토콜 위 이미지에선 클라이언트의 요청을 서버가 알아듣지 못하고 있다.이러한 상황을 방지하기 위해 지켜야하는 통신 규약을 프로토콜이라고 한다. HTTP 클라이언트와 서버는 HTTP 라는 프로토콜을 이용해서 서로 통신한다.여기서 HTTP를 이용해 주고받는 메시지는 "HTTP 메시지" 라고 부른다. ..
앱개발 심화 1주차 정리 - 2 사용자 위치 얻기 위치접근권한- android.permission.ACCESS_COARSE_LOCATION: 와이파이나 모바일 데이터를 사용해 기기의 위치에 접근하는 권한이다. (도시에서 1블록 정도의 오차 수준)- android.permission.ACCESS_FINE_LOCATION: 위성, 와이파이, 모바일 데이터 등 이용할 수 있는 위치 제공자를 사용해 최대한 정확한 위치에 접근하는 권한입니다. - android.permission.ACCESS_BACKGROUND_LOCATION: API 레벨 29 이상에서 백그라운드 상태에서 위치에 접근하는 권한입니다.안드로이드에서 사용자의 위치 정보를 얻으려면 해당 권한을 사용자로부터 획득해야한다.권한 요청 절차는 사..
앱개발 심화 1주차 정리 - 1 SharedPreferences Preference란?프로그램의 설정 정보를 영구적으로 저장하는 용도로 사용된다.데이터를 XML 포맷의 텍스트 파일에 키-값 세트로 정보를 저장한다.앱을 삭제하면 저장된 데이터들도 전부 삭제된다. SharedPreferences란?SharedPreferences 클래스는 Preferences의 데이터를 관리하는 클래스로,변경사항을 액티비티간에 공유하며 데이터는 외부에서 읽을 수 없다. XML 파일 생성getSharedPreferences(name, mode)여러개의 SharedPreference 파일들을 사용하는 경우 해당 함수를 사용하여 SharedPreference 객체를 불러올 수 있다. name에는 프레퍼런스 데이터를 저장할 XM..