Fragment, Fragment lifecycle 내일배움캠프 7기 Android TIL 34일차 (2023.08.31) 일일 회고 벌써 과제 제출일과 한 주의 마지막이 다 되간다. 과제는 얼추 다 정리하였으니 최종 제출을 하고, 내일은 다음주 프로젝트 시작을 위해 약간 쉬어가는 타임을 가지며 공부를 해봐야 aaapple.tistory.com 업데이트 필요 시 계속 업데이트
앱을 개발하다보면 액티비티, 프래그먼트 이동 시에 각각에 데이터를 전달해야하는 경우가 있다. 보통 putExtra를 통해 값을 한 개씩 넣는데, 넣을 값이 많아지면 굉장히 불편해진다. 이것을 방지하기위해서는 데이터 객체자체를 넘겨줘야하는데 기본적인 putExtra로는 보낼 수 없고 객체를 직렬화해주어야 넘길 수 있다. 직렬화를 가능하게 하는 Parcelable, Serializable에 대해 알아보자 우선 직렬화는 '자바 언어에서 사용되는 Object 또는 Data를 다른 컴퓨터의 자바 시스템에서도 사용 할수 있도록 바이트 스트림(stream of bytes) 형태로 연속전인(serial) 데이터로 변환하는 포맷 변환 기술'을 일컫는다. 데이터를 넘겨주기 위해 새로운 포맷을 만드는 행위이다. 먼저, Se..
https://aaapple.tistory.com/54#article-1-1--troubleshooting 내일배움캠프 7기 Android TIL 22일차 (2023.08.14) 일일회고 입문 프로젝트가 시작되었다. 동시에 선발대 2주 차도 진행되어 과제가 부여되었다. 프로젝트 회의, 개발 , 선발대 과제 등 할 것들이 많아졌다. 시간분배를 잘하여 모두 큰 문제없이 aaapple.tistory.com
Toolbar 앱의 상단에 위치해 있으며, 가장 기본적인 형태는 한쪽에는 활동 제목을 표시하고 다른 쪽에는 더보기 메뉴를 표시한다. 툴바(앱 바)는 이렇게 간단한 형태로도 유용한 정보를 사용자에게 제공하고 일관된 디자인과 분위기를 Android 앱에 제공하도록 지원한다. Toolbar? ActionBar? Toolbar를 언급하면 연관되어 나오는 것이 ActionBar이다. 나도 처음에는 두 개가 같은? 개념인 줄 알았는데, 같은 개념은 아니었다. 다음에서 이유를 봐보자. 앱 바 설정하기 | Android 개발자 | Android Developers 앱 바 설정하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 가장 기본적인 형태의 작업 모음은 한쪽에는 활동 제목을 표시하..
android jetpack 구성요소 중 하나이다. 대량의 데이터를 동적, 효율적으로 보여주기 위한 뷰 레이아웃이다. 기존에 같은방식으로 뷰를 나타내는 ListView가 있다. 그렇다면 왜 ListView가 아니라 RecyclerVIew를 사용할까? ListView? RecyclerView! ListView에는 몇 가지 단점이 있는데 그중 큰 단점이 하나 있다. ListView의 특성에 의해 생기는 단점인데, ListView에서 데이터를 불러올 때 모든 데이터를 한 번에 불러오기 때문에 대용량 데이터를 ListView에 보여주려면 속도, 성능(스크롤 시 버벅거림 등) 면에서 문제가 발생한다는 것이다. RecyclerView RecyclerView에는 뷰의 이름에 있듯이 뷰를 재활용하는 개념이 있다. 위의..
TabLayout & ViewPager2 TabLayout TabLayout은 탭(tab)으로 구분하는 화면에서 탭 버튼을 배치하는 레이아웃이다. 보통 앱바 바로 하단에 붙어 탭 구분을 해서 여러 화면을 보여 줄 수 하게 뜸하다. 탭은 보통 상단에 위치하기에 불편한 점이 종종 있다. 바로 기기의 화면이 크면 (스마트폰 기준) 한 손으로는 탭을 터치하기가 불편하다는 점이다. 이를 해소할 수 있는 방법이 있는데 TabLayout에 ViewPager를 적용시켜 주는 것이다. ViewPager는 좌우 스크롤을 통해 화면을 넘길 수 있는 기능을 제공한다. 좌우 스크롤을 통해 손가락을 위로 올리는 불편함 없이 편한 자세로 스크롤하여 탭을 제어할 수 있다. ViewPager2 ViewPager는 좌우 스크롤을 통해 ..
어제 과제를 하다가 뻘짓을 한게 떠올라 글을 써본다. 구현했으니 이제 확인해봐야지~ 하고 실행을 시키는데 앱이 계속 꺼진다.. 분명? 틀린 것이 없다고 생각했는데 자꾸 꺼졌다 (흔한 맞왜틀) 로그캣을 살펴봤다... java.lang.ClassCastException: androidx.constraintlayout.widget.ConstraintLayout cannot be cast to android.widget.Button 위 에러가 발생했다. constraint layout은 Button 타입으로 캐스팅 될 수 없다는 의미인데.. 레이아웃이 위젯의 상위타입이 아니니...당연한 것이였다. 처음엔 코드를 다시 살펴봤는데 코드는 문제가 없어보였다. 그래서 xml로 가서 일일히 살펴보았다.... 원인은 여기..
지난 글에 이어서 이번에는 직접 생명주기 메소드를 사용하여 안드로이드 스튜디오에서 실행해보며 어떤 순서로 동작하는 지 알아보자 먼저 생명주기 호출 함수를 override하여 내부에서 로그를 찍어보며 확인하도록 로그를 찍어보았다. MainActivity.kt 더보기 package com.example.myapplication import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.widget.Button class MainActivity : AppCompatActivity() { override fun onCr..
개요 안드로이드 개발에서 액티비티 생명주기는 앱의 실행과 종료 과정을 이해하는 데 핵심적인 개념이다. 액티비티는 4대 컴포넌트 중 하나이며 사용자와의 상호작용(UI, UX)에 밀접한 관련이 되어있다. 따라서 사용자 경험에 직접적인 영향을 미치는 중요한 역할을 수행한다. Youtube앱을 봐보자. 앱을 들어가면 처음 로고가 보이는 화면도 액티비티이고 로고가 내려가고 영상 목록이 보이는 화면도 액티비티이다. (하단 탭에서 메뉴를 클릭하면 화면이 바뀌는데 이것은 프래그먼트로 구성된 것 일 수도 있다.) 이렇게 안드로이드 앱은 많은 액티비티로 구성되어 있다. 이런 액티비티의 생명주기를 갖고 이는 다섯 가지의 주요 상태로 구성된다. 처음 앱이 실행되면 액티비티가 생성되고 시작된다. 이후 액티비티는 사용자와 상호작..
안드로이드 기기의 다양성은 우리에게 다양한 기능과 편의성을 제공해준다, 동시에 개발자들에게는 고민을 안겨주기도 한다. 그 중 하나가 바로 '해상도'이다. 안드로이드 기기들은 Android moblie, Android TV, Android Auto 등 다양한 플랫폼에 사용되고 그 안에서도 기기에 따라 굉장히 다양한 해상도를 갖고 있으며, 이는 개발자들이 앱을 디자인하고 개발하는데 영향을 미치고 있다. 이 글에서는 안드로이드 기기별 해상도 차이에 발생할 수 있는 문제와 이를 해결하는 방법에 대해 살펴보고자 한다. 먼저, 해상도를 알아보기전에 알아야 하는 개념이 있다 바로 px, dpi, dp이다. 이들은 해상도를 표현하기 위한 단위로 안드로이드에서는 다양한 단위를 지원하기 때문에 알아 둘 필요가 있다. PX..