분류 전체보기
-
Activity, IntentAndroid 2024. 3. 28. 23:53
액티비티 액티비티의 기본 개념 액티비티 생명 주기 안드로이드 4대 컴포넌트 액티비티(Activity) : 사용자가 직접 상호작용하는 화면 서비스(Service) : 백그라운드(사용자가 직접적으로 인지하지 못하는 공간)에서 오랜 시간 동안 실행되어야 하는 작업을 수행(예. 음악 재생, 파일 다운로드) 브로드캐스트 리시버(Broadcast Receiver) : 안드로이드 시스템으로부터 발송되는 다양한 이벤트나 정보(예. 배터리 부족 경고, 화면 꺼짐)를 애플리케이션이 받을 수 있게 해주는 컴포넌트 콘텐트 프로바이더(Content Provider) : 애플리케이션 간의 데이터 공유를 가능하게 함. 데이터를 저장하고 관리하는 일종의 데이터베이스 역할을 함. 액티비티 정의: 사용자가 직접 상호 작용하는 창(win..
-
Layout, Margin, Padding, GravityAndroid 2024. 3. 27. 23:46
3-2(Android UI - Layout), 3-3(Android UI 실습) Margins/Padding/Gravity에 대한 이해 Linear Layout LayoutWeight : 자식들이 배치 될 때, 전체 영역 대비 비율의 개념으로 지정할 수 있는 Weight(가중치)를 설정 Relative Layout Table Layout 일단 넘김(아직 공부X) Frame Layout 정의: 컨테이너에 포함되 뷰들을 전부 좌상단에 배치하는 레이아웃 - 하나의 자식 View 위젯만 표시할 때 사용하는 Layout 클래스 - FrameLayout에 여러 View 위젯을 자식으로 추가하면 겹쳐진 형태로 표시되며, 가장 최근에 추가된 View 위젯이 가장 상위에 표시 - 모든 자식 View는 좌상단에 배치되며,..
-
액티비티 생명주기카테고리 없음 2024. 3. 25. 14:53
액티비티가 화면에 표시되고 종료될때까지 생명주기가 있다. MainActivity의 클래스를 보면 override fun onCreate 함수가 있는 것을 볼 수 있다. 하지만, 액티비티 생명주기에는 onCreate 말고도 더 많다. // FirstActivity.kt val TAG = "FirstActivity_Lifecycle" // LogCat에서 확인할 TAG 내용 설정(원하는대로) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... } override fun onStart() { super.onStart() Log.i(TAG, "onStart()") } override fun onRes..
-
2번째 키오스크 과제Android 2024. 3. 24. 23:56
1. 람다식에 대해서는 아직 딥다이브 할 필요는 없습니다! 굳이 람다식을 안써도 구현할 수 있는 방법이 거진 다 있으며, 그런 것들이 충족되면 추후 람다식을 더 활용해보면 좋지 않을까 생각듭니다. 그러니 좌절하지 마세요! 2. warning (노란 줄, 노란 음영) 뜨는 부분을 넘어가지 말기 → alt + enter 나 alt + shift + enter 로 해결하기 3. val option: Int = (readlnOrNull() ?: "0").toInt() 아니면 val option = readln().toInt() 4. Basket이 싱글턴이라면 basket이나 requireMoney와 같은 멤버필드를 외부에서 바꾸지 못하게 해주세요. setter을 만들어서 해주는 연습을 해주면 좋을 것 같습니다...
-
안드로이드 세번째 과제Android 2024. 3. 23. 22:15
EditText에 대한 정리 비밀번호는 입력내용이 가려져야 하는데.. 구글링이 잘 안나오네 구글 공식 문서도 참고하기가 조금 힘들다 // 첫번째 시도 EditText를 한번더 감싸서 password_toggle 을 사용하면 자동으로 password 를 숨기기가 가능하다는데.. 레이아웃 배치가 이상하게 돼서 실패 ㅠㅠ 안드로이드에서는 InputMethodManager를 제공하는데 해당 클래스의 메소드를 활용하여, SoftInput(입력화면)을 숨기거나 가져올 수 있다. public boolean hideSoftInputFromWindow(IBinder windowToken, int flags) // 입력창을 숨기는 메소드 public boolean showSoftInput(View view, int fla..
-
앱 아키텍처 - 챌린지 과제Android 2024. 3. 22. 21:06
모바일 앱 사용자 환경 일반적으로 Android 앱에는 여러 앱 구성요소가 포함되는데, 앱 구성요소는 개별적이고 비순차적으로 실행될 수 있다. 운영체제나 사용자가 언제든지 앱 구성요소를 소멸시킬 수 있는데, 이런 이벤트는 직접 제어할 수 없기 때문에 앱 구성요소에 애플리케이션 데이터나 상태를 저장해서는 안 되며 앱 구성요소가 서로 종속되면 안된다. 일반 아키텍처 원칙 안드로이드 앱에 있어 아키텍처를 정의하는 것은 중요하다. 앱 아키텍처는 앱의 부분과 그 각 부분에 필요한 기능 간의 경계를 정의한다. 애플리케이션 데이터나 상태를 저장하는데 앱 구성요소를 사용할 수 없는 요구사항을 충족하려면 몇 가지 특정 원칙을 준수하도록 앱 아키텍처를 설계해야한다. 관심사 분리 Activity 또는 Fragement 같은..
-
MVC, MVP, MVVM, MVIAndroid 2024. 3. 19. 11:08
MVC MVC의 구성요소로는 Controller, Model, View 가 있다. 이러한 로직으로는 Model에 대한 테스트는 쉽지만, View와 Controller의 테스트는 복잡해진다. 이때, 최소한 비즈니스 로직이라도 분리되면 테스트 가능성이 열리고, View가 아닌 로직에 대한 테스트가 가능해진다. MVP : MVC의 문제 해결방안 MVC의 한계를 해결하기 위해 나온 개념이다. MVP 패턴에서는 MVC의 Controller 역할을 View에서 처리한다. 로직을 분리하고, Model에 대한 직접 접근 역시 고리를 끊었다. 안드로이드 액티비티의 패턴 액티비티(Activity)는 View로 분리할 수 있다. (View는 Activity와 xml로 분리해 설명할 수 있기 때문이다.) MVP의 Preset..
-
람다식, 싱글턴카테고리 없음 2024. 3. 18. 19:35
1. 람다식 람다식은 코드를 더욱 간결하게 만들기 위한 목적을 가지고 있다. 메소드에서 중괄호를 치지 않고 바로 값을 리턴하거나, 메소드를 선언하지 않고 중괄호를 이용해 로직을 작성할 수 있다. fun add(n1:Int, n2:Int, n3:Int) = (n1+n2+n3)/3 // 람다식 1 var average = {n1:Int, n2:Int, n3:Int -> (n1+n2+n3)/3} print(average(10,20,30)) // 20 2. 싱글턴 : 클래스의 객체는 단 한개! 코틀린은 companion, object 키워드로 싱글턴을 구현할 수 있다. 싱글턴은 두가지로 쓰일 수 있다. 첫번째로, 클래스에 대한 객체를 생성하지 않고 바로 클래스에 접근해서 메소드를 사용하는 방식이다. 이때는 앞에..