Android/Study

Android/Study

[Android] 로그인 기능 구현 (2) - UiState

이전에 Activity를 작성한 적이 있다. 액티비티에서는 화면의 동작들을 처리한다면 UiState는 화면의 상태값을 지정하고, 저장하는 역할을 한다. 아래는 LoginUiState의 전체코드이다. 코드 data class LoginUiState( val email: String = "", val password: String = "", val isLoading: Boolean = false, val successToSignIn: Boolean = false, val userMessage: String? = null ) { val isInputValid: Boolean get() = isEmailValid && isPasswordValid private val isEmailValid: Boolean ge..

Android/Study

[Android] View가 그려지는 순서

View가 그려지는 과정에 대해서 알아보자. 이를 알아야하는 이유는 크게 2가지가 있다. Ui를 그리는 기본 구성요소가 바로 View이기 때문이다. Custrom View를 만들기위해서는 위 과정을 알아야 한다. 전위순회 방식을 쓰기 때문에, 부모 부터 자식 뷰 순서로 그려지게 됨 measure 뷰의 크기를 계산 모든 뷰는 각각 자신의 width, height 를 계산 measure 과정에서, 부모 - 자식 뷰간의 크기 정보 전달을 위해 2가지 클래스 사용 ViewGroup.LayoutParams : 자식 뷰가 부모 뷰에게 자신이 어떻게 측정되고 위치를 정할지 요청 할 때 사용, (how big) DP, PX.. : 자식뷰가 원하는 사이즈 MATCH_PARENT : 부모 뷰 사이즈와 똑같이 자식뷰 사이즈..

Android/Study

[Android] Activity 생명 주기(Life Cycle)

안드로이드 액티비티(Activity)에는 생명주기가 존재한다. 이에 따라 개발할때 고려해야 할 것들이 있는데, 우선 생명주기에 대해서 알아보자. 액티비티 생명주기는 onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestory()순으로 실행되며, 경우에 따라서 onRestart() 메소드가 호출되기도 한다. 공식문서에 따르면, 생명주기를 이해하고, 적절한 수명주기 콜백을 잘 구현하면 이러한 문제들을 해결하는데에 도움이 된다고 한다. 또한 앱의 완성도와 안정석을 높이기 위해서라도 반드시 알아야하는 개념이라고 한다. 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제 사용자가 앱을 활발하게 사용..

Android/Study

[Android] 안드로이드 4대 컴포넌트

안드로이드 4대 컴포넌트 란? 컴포넌트란 구성요소를 의미한다. 다시 말해서 안드로이드 4대 컴포넌트란 안드로이드 앱을 구성하는데 필요한 4개의 요소를 의미한다. 안드로이드 4대 컴포넌트에는 액티비티(Activity), 서비스(Service), 방송수신자(Broadcast Receiver), 콘테트 제공자(Content Provider)가 있다. Android 앱의 필수적인 구성요소로, 각각은 시스템이나 앱에 들어올 수 있는 진입점이다. 특징 각 컴포넌트는 독립적으로 존재한다. 각 컴포넌트는 고유의 기능을 수행한다. 각 컴포넌트는 인텐트를 통해서 서로 상호작용한다. 1. 액티비티(Activity) 사용자와 상호작용을 담당하는 인터페이스입니다. 앱을 실행을 할 때는 앱을 전체적으로 호출하는 것이 아니라 앱의..

Android/Study

[Android] 졸업 프로젝트 개요

블로그에 지난 졸업프로젝트에서 했던 주요 기능부분을 기록으로 남기려고한다. 조금? 오랜 시간이 지났지만 기억을 되살려서 기록을 해보자. 팀 구성 Android 1명 iOS 1명 BackEnd 2명 작품 개요 작품 이름 : Bong# 작품 설명 : 재능 교환 마켓 앱 어플리케이션은 기존에 재능과 재화를 교환하던 방식에서 벗어나 재능과 재능을 교환하는 서비스입니다. 자신이 가지고 있는 재능을 통해 상대에게 재능을 가르치고 상대의 재능을 배울 수 있는 기회를 제공합니다. 사용자는 자신의 프로필에 자신이 잘하는 재능을 기록할 수 있습니다. 예를들어 코딩을 잘하는 사람은 IT를 그리고 운동을 잘하는 사람은 헬스, 골프, 축구등을 기록할 수 있습니다. 그리고 사용자는 올라오는 게시물들을 통해 사용자가 원하는 재능과..

Android/Study

[Android] RelativeLayout(상대적 레이아웃) 정리

RelativeLayout이란 상대 뷰의 위치를 기준으로 정렬하는 레이아웃 클래스이다. 즉, 화면에 이미 출력된 특정 뷰를 기준으로 방향을 지정하여 배치한다. 사용되는 속성 android:layout_above : 기준 뷰의 위쪽에 배치 android:layout_below : 기준 뷰의 아래쪽에 배치 android:layout_toLeftOf : 기준 뷰의 왼쪽에 배치 android:layout_toRightOf : 기준 뷰의 오른쪽에 배치 align 속성 상대 뷰의 어느 쪽에 맞춰서 정렬할지를 정하는 속성이다. 사용되는 속성 android:layout_alignTop : 기준 뷰와 위쪽을 맞춤 android:layout_alignBottom : 기준 뷰와 아래쪽을 맞춤 android:layout_al..

Android/Study

[Android] LinearLayout(선형 레이아웃) 정리

LinearLayout이란 LinearLayout은 뷰를 가로나 세로 방향으로 나열하는 레이아웃 클래스이다. orientation이라는 속성을 통해서 horizontal(가로)이나 vertical(세로)값을 방향을 지정한다. LinearLayout은 방향만 설정하면 뷰를 추가한 순서대로 나열한다. 화면에서 벗어나더라도 줄을 자동으로 바꾸지 않는다. 위 그림 처럼 만약 LinearLayout의 orientation 속성 값을 vertical로 지정했다면 세로로 나열하고, horizontal로 나열한다면 가로로 나열한다. 방향만 설정한다면 뷰를 추가한 순서대로 나열한다. 그렇다면 가로세로가 중첩된 구조는 LinearLayout으로 만들 수 없을까? 아니다. 이럴 때는 LinearLayout을 중첩하면 된다...

Android/Study

[Android] 로그인 기능 구현 (1) - Activity

https://superohinsung.tistory.com/252 [SangSangstagram] 안드로이드 로그인 화면 구성 및 디자인 지난 프로젝트에 대한 회상 겸 정리할 겸 작성을 해보았다. (물론 너무 오랜 시간이 지나긴했지만...) 작년에 했던 팀플 과제였지만, 그래도 나름? 잘했던 것 같아서 몇몇 기능만 블로그에 리뷰로 superohinsung.tistory.com 지난 번에 로그인 화면에 디자인에 대해서 글을 작성하였고, 이번에는 본격적으로 기능에 대해서 작성을 할 생각입니다. LoginActivity 액티비티에서는 우선 Ui 작동에 필요한 기능들을 포함하고 있습니다. companion object { fun getIntent(context: Context): Intent { return ..