Room...어렵다... 내가 아는 Room은 방을 의미하는건데... 뭔소리인지.... 간단하게 구조랑 용어 정리 좀 다시 해봐야 겠다..! Room 구성요소 데이터베이스 데이터베이스는 앱에 저장되어 있는 로컬 데이터에 대한 액세스 포인트를 제공해주는 역할 데이터 액세스 오브젝트 (DAO, Data Access Objects) DAO는 앱에서 데이터베이스의 데이터를 추가, 삭제, 업데이트 작업을 메소드 형태로 정의하여 제공 그 외에도 다양한 쿼리 사용 가능 Entity DB에 저장할 데이터 형식 데이터베이스 클래스는 데이터베이스와 연관된 DAO 인스턴스를 앱에 제공합니다. 이후 앱은 DAO를 통해서 테이블을 가리키는 Entity 인스턴스를 가져올 수 있습니다. 그리고 앱에서 Entity 클래스를 이용하여..
프로젝트를 진행하면서 다양한 Dialog를 보게 알게 되었다 그 중 DialogFragment()를 사용하여 띄워 보았다! 레이아웃 파일은 공통으로 주어졌다 (좌우 패딩값을 넣어 주었다) 레이아웃은 내 마음대로 커스텀해서 작성하면 된다..!! 더보기 // 숨김항목에 관련된 레이아웃 작성 1. 옆면이 투명하게 처리되면서 Dialog띄우기 private fun loadFragment() { val fragmentManager = requireActivity().supportFragmentManager val newFragment = ContactDialogFragment() newFragment.show(fragmentManager, "ContactDialogFragment") newFragment.setL..
Android API 33에서부터 onBackPressed() 메서드가 deprecated 되었다. Android 12부터 사용자 터치에 응답하는 반응형 모션이 도입되었기 때문인데...!!!! 이로인해 Google은 OnBackInvokedCallback(API 33부터 가능 / 이전버전 기기에서 실행하면 예외 발생) 또는 OnBackPressedCallback 을 사용하기를 권고하고 있다!!!! 기존 override fun onBackPressed() { super.onBackPressed() } OnBackPressedCallback class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) ..
강의를 듣다가 내일 mvvm 디자인 패턴에 대해 공부한다길래 미리 복습 겸 알아보기로 했다..!! 대충 어떤 식으로 움직이는지만 공부해서 장단점이나 구체적인 사항은 따로 게시글 만들어야지....(이말만 벌써 3번째..?) 사실 계속 자료 찾아보면서 이해하려고 해도 이해가 잘 안된당.. (그동안 팀플에 바빠서 til를 안썼는데 다시 열심히 작성해야 겠다..!!) Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분 View : 사용자에게 직접적으로 보여지는 영역" / 안드로이드에서는 xml 혹은 compose로 작성한 시각적인 부분을 담당하는 영역 Controller / Presenter / ViewModel : View와 Model 부분을 연결시켜주는 "인터페이스 어댑터" 영역 MV..
오늘부터 팀프로젝트를 시작했다..!! 급 난이도가 올라가는 바람에 너무 어렵다... 그래도 한단계씩 천천히 완성하는 것을 목표로 잡고 해야겠다..!!! 우리조 같은 경우는 bottomNavigation + viewPager를 사용했다 각각의 화면은 fragment로 구성을 하였는데 기존 activity와 다르게 fragment에 binding방법은 달랐다..!! private var _binding: ResultProfileBinding? = null private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ..
과제를 진행하는데 parcelable을 사용하라고 하는데 이게 뭔지 좀 알아보았다..! Parcel 소포, 꾸러미의 의미 짐을 싸듯이 객체를 싸는 클래스가 Parcel 클래스! 객체의 직렬화는 객체의 내용을 바이트 단위로 변환하여 파일 또는 네트워크를 통해서 스트림(송수신)이 가능하도록 하는 것을 의미 Parcelable 자바 시스템 공용인 Serializable과 달리 Parcelable은 안드로이드 SDK에서 포함하는 인터페이스 Serializable과 다르게 리플렉션 사용하지 않고, 필요한 부분만은 직렬화, 비직렬화 할 수 있도록 효율성을 좋게 만들어 줌 Serializable vs Parcelable 성능차이 출처 : https://www.developerphil.com/parcelable-vs-..
오늘은 최대한 과제를 끝내놔야해서...딱히 공부한건 없는 것 같다.. 그냥 당x마켓 레이아웃 그릴 때 꿀팁 공유 한다..! 1. 바텀네비게이션바 클릭 시 보라색 버튼이 움직이는데 그걸 ripple이라고 한다 레이아웃 파일에 이걸 값?을 입력하면 보라색 액션버튼이 없어지고 바텀네비게이션바 라벨이 보인다! app:itemRippleColor="@null" app:labelVisibilityMode="labeled" 2. 아무리 color조건을 확인해도 버튼 클릭 시 보라색 버튼이 머물러 있다..! 이럴경우 코틀린파일에 들어가 binding.navMain.itemActiveIndicatorColor = null 값을 넣어주면 바탕색이 사라진다!! 3. 사진에 코너값 입력해 줄 때 CardView를 사용해도 되..
개인과제 레이아웃을 그리다가 기왕 할 거 최대한 비슷하게 그리면 좋지 않을까?! 란 생각에 당x마켓이랑 똑같이 만들다가 fragment에도 생명주기가 있어서 한번 정리해 보았다....! (activity보다 더 복잡한 것 같다..!) 1. OnAttach() 프래그먼트가 액티비티에 붙을 때 호출하며, 인자로 Context가 주어진다. 2. OnCreate 프래그먼트가 액티비티의 호출을 받아 생성되면 Bunddle로 액티비티로부터의 데이터가 넘어온다. (UI는 초기화가 불가능) 3. onCreateView() 레이아웃 inflate 담당 savedInstanceState로 이전 상태에 대한 데이터 제공 View와 관련된 객체를 초기화 할 수 있음 4. onViewCreated() onCreagteView(..
리스트뷰..리사이클러뷰.. 커스텀뷰..그리드뷰... 뭔 뷰가 이렇게 많아.... 뭘 연결하고 뿌려주고 잉.. (후발대 과제도 리사이클러뷰인데.. 머리가 터질듯..뷰 어댑터 뷰홀더 뭐가 이렇게 새로운 용어가 많은지..) 지금 대충 정리된 내용 말고도 추가적으로 따로 게시물 파서 정리를 더 해야겠다 (저번에도 그렇게 말만하고 까먹었지만..ㅠㅠ) 우선 가장 대표적인 리스트뷰와 리사이클러뷰에 대해 비교해보고자 한다! 리스트뷰란? 데이터의 목록을 세로방향으로 나열하여 화면에 표시하는 뷰그룹의 한 종류 리스트 항목이 갱신될 때마다 매번 아이템 뷰를 새로 구성해야 하기 때문에 성능저하를 야기하는 요인이 됨! 리사이클러뷰란? 한 화면에 보기 힘든 수많은 데이터를 스크롤 가능한 리스트로 출력하는 뷰그룹의 한 종류 아이템..
이번주차는 심화주차라고 하는데.. 아직도 초보자인 내가 심화라니.. 강의는 듣고 있는데 어댑터 뷰에 대해서는 좀 더 공부가 필요 한 것 같아서 패스하고 뷰 바인딩에 대해 정리하려고 한다..! 팀 프로젝트를 진행하는데 너무 많은 findViewById를 사용하다보니 내가 뭘 쓴건지 뭘 빼먹은건지... 혼란이 오기 시작했다..! 코드 길이도 findViewById만 쓰느라 20개 이상 쓸 때도 있고...어질어질 그래서 findViewById를 대체 할 수 있는 ViewBinding에 대해 정리해보려 한다..! ViewBinding ViewBinding이란 단어를 보면 View + Binding(묶음) 즉, 레이아웃 XML파일에 대해 자동적으로 Activity와 이어주는 기능을 말한다..! build.grad..
