전체 글

전체 글

    [Project] 명식이(명지대의 식사를 책임지다!) 회고

    [Project] 명식이(명지대의 식사를 책임지다!) 회고

    [진행 기간] 2022.10 ~ 현재 진행중 [인원] 안드로이드 개발자 : 1명 백엔드 개발자 : 1명 iOS 개발자 : 1명 디자이너 : 2명 [역할] PM, 서비스 기획, 안드로이드 개발 [회고] 명지대학교에 MCC(명지 복합 라운지) 새로운 캠퍼스 건물이 생기면서, 복합 라운지에 새로운 학생식당 업체가 들어왔다. 기존의 학식과는 퀄리티가 달랐으며 그 결과 학생들이 줄을 서서 먹는 것을 발견했다. 하지만 학식 메뉴에 관해서는 총학생회가 올려주는 인스타 스토리를 통해서나, 직접 방문하거나, 에브리타임에 학생이 올려주는 식단 사진을 보고 알 수 있었다. 따라서 여태까지 프로젝트를 같이 했던 친구와 같이 "우리 학식 메뉴 앱 간단하게 만들어볼래?" 라고 이야기가 나와 개발을 시작했다. 사실상 오늘 식단을 ..

    [Compose]스톱워치

    [Compose]스톱워치

    전 컴포즈 게시물에서는 간단하게 비만도 계산기를 만들어 봤다. 이번 게시물에서는 다음 그림과 같이 스톱워치를 만들어보면서 콜백함수와 컴포즈로 뷰 작업 하는 것에 익숙해져야겠다. 시작을 하면 초와 밀리초가 나오면서, 랩타임을 클릭했을 때 위와 같이 시간이 기록되고, 정지를 눌렀을 때 모든 기록된 시간이 초기화된다. 먼저 ViewModel로 기능먼저 구현해보자. private var time = 0 private var timerTask : Timer? = null //현재 진행되고 있는지 private val _isRunning = mutableStateOf(false) val isRunning : State = _isRunning private val _sec = mutableStateOf(0) val ..

    [JETPACK개론] Paging

    [JETPACK개론] Paging

    Jetpack Paging 라이브러리는 말 그대로 하나의 문서를 분리된 페이지로 나누는 것. 즉, 데이터가 클 때 작은 단위로 쪼개서 사용하는 곳에 적용된다. 예를 들어 구글에 안드로이드를 검색했을 때 수십억개의 결과가 나온다. 이를 한 번에 전달한다면 엄청난 트래픽이 발생할 것이다. 따라서 검색 결과를 10개씩 페이징해서 보여준다. 안드로이드 공식문서에 따르면 대규모 데이터 세트의 데이터 페이지를 로드하고 표시할 수 있다고 나와있다. 직접 paging을 구현하려면 너무 어려운 점이 많기 때문에 구글에서는 paging 라이브러리를 발표했다!! 페이징은 프로젝트의 적절한 관심사를 분리를 요구하며 안드로이드 권장 아키텍처에 통합되도록 만들어졌으며, 위와 같이 작동된다. 개별데이터가 PagingSource로 ..

    [JETPACK개론] DataStore

    [JETPACK개론] DataStore

    기존 프로젝트에서 서버에서 받은 로그인 토큰값을 간단하게 저장하기 위해 SharedPreferences를 사용하여 저장하였다. 복잡한 대규모 데이터가 아닌, 소규모였기 때문에 Room을 사용하기보다 SharedPreferences를 사용해서 저장했다. DataStore는 SharedPreferences의 단점을 보완하며 등장했다. DataStore가 데이터처리에 Flow를 도입했기 때문에 스레드나 예외처리 부분에서 개선되었다. ui스레드에서 안전하게 call할 수 있고, 예외처리에서도 안전해졌다. 이렇게 여러 가지 단점들을 보완하며 나타난 것이 DataStore이다. DataStore에는 다음과 같이 두 가지 유형이 존재한다. 이 글에서는 키를 사용하여 데이터를 저장하고 데이터에 엑세스하는 Prefere..

    [Compose]비만도 계산기

    [Compose]비만도 계산기

    계속 xml로만 안드로이드 개발을 해왔는데 이제부터 익숙해지려면 Compose로만 해야할 것 같았다.. 그래서 간단히 이번 글에서는 xml이 아닌 compose로만 bmi 계산기를 만들어보자! 먼저 첫 번째 화면을 만들어보자. 첫 번째 화면에서의 앱의 가장 상단바를 Scaffold를 이용해서 만들 수 있다. Scaffold( topBar = { TopAppBar( title = { Text("비만도 계산기")} ) } ) 위와 같이 title을 만들어주면 앱의 상단바가 완성된다. 입력할 수 있는 TextField 두 개, 버튼 한 개가 있는데, 여기서 그냥 TextField가 아닌, 입력할 때 hint값이 올라가는 OutLinedTextField를 이용해야 한다. Column( modifier = Mod..