본문 바로가기

Android/Android 핵심기술38

[Android/Kotlin] 버튼 눌렀을때 Fragment화면 나타내기 안드로이드에서는 화면을 바꾸는 방법이 두가지가 있는데첫번째는 새로운 엑티비티를 띄우는 방식, 두번째는 엑티비티의 일부만 바꾸는 방식(프레그먼트를 통해)이렇게 두가지가 있다 오늘은 두번째방식인 버튼을 눌렀을때 프레그먼트를 통해 엑티비티의 일부를 바꿔보는 방법을 기록해보려고 한다 일단 버튼을 만들어주고, 프레그먼트가 들어갈부분을 FrameLayout으로 만들어준다디자인을 보면 FrameLayout부분이 이렇게 공간을 차지하고있는것을 볼수있다. 이부분에 프레그먼트를 넣어줄것이다 activity_main.xml 이제 새로운 프레그먼트를 만들어준다.뷰바인딩을 사용해서 바인딩만 미리 설정해줬고, 디자인은 텍스트뷰만 추가해줬다class DonutListFragment : Fragment.. 2024. 3. 28.
[Android/Kotlin] 코틀린의 ViewBinding과 DataBinding # ViewBinding과 DataBinding 사용하는 이유XML 레이아웃 파일을 만들고, 이 레이아웃을 코드에서 findViewById를 사용해서 연결해주는데 findViewById를 계속 쓰게되면 코드도 복잡해지고 유지보수도 어려워질 수 있는 문제가 발생한다 이러한 문제를 해결하기위해 ViewBinding과 DataBinding이 나왔는데 이를 사용하면매번 findViewById를 사용하지 않고 바로 바인딩할 수 있어서 가독성이 좋고, 유지보수가 쉽다 ViewBinding과 DataBinding은 이런점에서 공통점을 가지지만 선언방식, 코드작성방식 등에서 차이가 있다항상 ViewBinding과 DataBinding 쓸때마다 조금 헷갈려서 정리를 해보려고한다 # findViewById와의 차이점1.. 2024. 3. 28.
[Android] 엑티비티 생명주기(Activity Life Cycle) 생명주기의 사전적 정의를 살펴보면 "어떤것이 태어나고 죽기까지의 기간"을 말한다고 나와있다 사람으로 예를들어보면, 사람은 태어나고 죽기까지의 생명주기를 가지며 이 생명주기동안 사람은 어린아이에서 어른이, 어른에서 노인이되는 과정을 거치게된다 그런데 안드로이드의 Activity도 이렇게 생성되고 소멸되기까지의 생명주기를 가지고있다이런과정은 여러함수들로 구성이 되어있는데 이런 함수들을 총칭해서 Activity 생명주기라고 부른다 그래서 이런 Activity 생명주기를 사용하면 프로그램을 더욱 안정적으로 구현할수있게된다 먼저 이런 Activity 생명주기를 왜 사용해야되는지 예를 들어서 설명해보면 휴대폰으로 게임을하고있는 도중에 전화가 왔다고 해보자그러면 보통 게임이 일시정지가 되고, 전화를 마치게되.. 2024. 3. 26.
[Android/Kotlin] 버튼에 elevation 속성값을 지정했음에도 그림자가 안보일때 나는 이런식으로 버튼을 디자인했고, Register버튼에 그림자값을 적용해주고싶었다그래서 elevation값을 적용했는데도 그림자 적용이 안됐다!!ㅜㅜㅜ 찾아보니깐 그림자가 생길공간이 없는 경우에 적용이 안된다고 한다그림자 생길공간이 없었기 때문에 padding값을 8정도로줘서 공간을 만들어줬다 근데 이런식으로해도 아직도 안됐다...부모 컴포넌트의 padding을 적용해줬기때문에 이에 의해서 그림자가 잘리는경우가 발생한다고한다부모 컴포넌트에 android:clipToPadding="false" 이값을 적용해주면 잘 적용이되는것을 확인할 수 있다 정리해보면 elevation을 적용했는데도 그림자가 적용이 안된다면??1. 배경색이 있는지 확인!!2. 그림자가 생길 공.. 2024. 3. 21.
[Android/Kotlin] ConstraintLayout - chain, bias ConstraintLayout으로 레이아웃을 그릴때 다양한 방법이 있는데 Chain과 Bias위주로 살펴볼것이다 1. Chain 크게 이렇게 두개로 나눌수있다 - layout_constraintHorizontal_chainStyle : 수평 방향 체인 스타일 결정 - layout_constraintVertical_chainStyle : 수직 방향 체인 스타일 결정 체인은 spread / spread inside / packed 유형으로 나눌 수 있다. 체인 헤드부분에만 체인속성을 적용하면 된다! 각 속성의 차이를 알아보자 # layout_constraintHorizontal_chainStyle = "spread"-> 각각의 뷰를 균등하게 분산 android:id="@+id/google" .. 2024. 3. 21.
[Android/Kotlin] registerForActivityResult() 사용법 registerForActivityResult()는 양방향으로 데이터를 주고받는 경우에 주로 사용한다StartActivity(intent)로 계속해서 엑티비티 호출을 반복하게되면, 엑티비티 스택에 계속해서 엑티비티가 쌓이는 문제가 생기는데 이를 방지하기위해 registerForActivityResult()를 사용한다!! 내가 지금 구현하고자하는 것은 첫번째 페이지에서 이름,아이디,비밀번호값을 입력하고 회원가입버튼을 누르면 두번째화면으로 이동하면서 첫번째화면에서 입력했던 아이디,비밀번호값이 해당화면에 반영이 되고두번째화면에서 회원가입버튼을 누르면 다시 첫번째화면으로 돌아가도록 하는것이다 여기에서도 볼때 회원가입화면에서 로그인화면으로 돌아갈때마다 매번 로그인화면이 생성이 되므로 엑티비티 스택에 계속 엑티비.. 2024. 3. 21.