본문 바로가기

분류 전체보기100

TIL : 맨 위로 가기 버튼 만들기(floating button) 맨 위에 있으면 fade out 효과가 적용되면서 버튼이 사라지고 맨 위가 아니면 fade in이 적용되면서 버튼이 나타나는 것을 구현하는 기능을 구현하라는 선택과제 주어졌다. 사실 안해도 상관없지만 나의 도전욕구를 자극해서 해보았다. 위에 사진처럼 나오게 하며 되는데... 여느 앱을 들여다보면 다 있는 정말 일반적인 기능이다. 코드 //..... xml을 만들고... private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } private lateinit var fadeInAnim :Animation private lateinit var fadeOutAnim :Animation //.... fadeInAnim = Animati.. 2024. 1. 11.
안드로이드 코틀린 recyclerview 만들기 이전 글에서 리샤이클러 뷰의 개념에 대해서 설명했었는데 이제 구현해볼 차례다. 원래는 그 날 다 쓸까 했었는데 글이 너무 길어질거 같아서 나눴다. 아래 코드는 부트캠프 과제로 했던 코드 중 일부이다. activity_main.xml main_list_item.xml 이 레이아웃이 리사이클러 뷰에 뜰 것이다. 값을 바꿔줘야하는 뷰에는 아이디를 설정해준다. 그래야 동적으로 바꿔줄 수 있다. Product.kt package com.android.applemarket import android.os.Parcelable import kotlinx.parcelize.Parcelize @Parcelize data class Product ( var pnum :Int , //번호 var imgsrc : Int , /.. 2024. 1. 10.
코틀린 scrollView, recyclerView 스크롤 맨 위로 이동 둘 다 똑같이 올린다는 행동은 똑같은데 방법이 다르다. scrollview의 경우 binding.scrollView.fullScroll(0) recyclerView의 경우 //부드럽게 올라감 binding.recyclerView.smoothScrollToPosition(0) //바로 올라감 binding.recyclerView.scrollToPosition(0) 2024. 1. 9.
KPT? Keep, Problem, Try 간단한 팀프로젝트 후, kpt라는 것을 작성했다. 이런 정리방법이 있다는 것을 처음 알았고 다른 사람들의 생각까지 참 직관적으로 불 수 있다는 점이 인상적이였다. 아래는 조원들과 상의하여 도출해낸 결론이다. Keep : 만족했던 점, 다음 프로젝트에서도 유지했으면 하는 점. 문제가 생겼을 때 지속적으로 대화를 하면서 풀어가는 과정을 유지 했으면 좋겠다. 하나의 기능을 여러명의 시점으로 보고 다양한 방법을 공유하는 방법을 유지하는 것이 좋다. 정기 및 수시로 코드 리뷰를 하며 진행 상황을 공유하며 중간 점검하는 방법을 유지하면 좋겠다. 이번 팀 프로젝트 경험을 토대로 다음에 있을 프로젝트에 경험을 녹여 더 매끄럽게 진행하면 좋겠다. 각자 맡은 역할을 책임지고 수행하려는 태도를 계속 유지한다. 사소한 질문도.. 2024. 1. 8.
getParcelableExtra is deprecated productInfo = intent.getParcelableExtra("product") 분명 getParcelableExtra 로 불러와야할 거 같은데 getParcelableExtra에 취소선이 그어져 있다. 그리고 똑같은 이름의 메소드가 있는데 매개변수가 하나 더 추가되있다. 아래처럼 쓰면 된다고 한다. 형변환을 하지 않고 매개변수로 넣어주나 보다. 해당 사항은 API 33 이상만 해당되며 33미만은 위에처럼 써주면 된다. productInfo = intent.getParcelableExtra("product",Product::class.java) 왜 이렇게 바꾼지는 모르겠다. 뭐가 더 나으니까 바꾼거겠지? 2024. 1. 8.
안드로이드 코틀린 : viewbinding xml 안에 있는 엘리먼트에 접근하려면 findViewById (R.id.textViewId) 와 viewbinding 을 사용할 수 있다. findViewById 은 수동, viewbinding 은 자동 이라고 생각하면 편하다. 둘 다 사용하면 되는거 아니야? 라고 생각할 수 있지만 viewbinding 사용을 권장한다. 왜일까? findViewById는 직접 프로그래머가 지정하는 것이다. 그러다보니 실제 동작과 의도가 다를 경우 예외를 발생시킬 수 있다. 예를 들어 해당 엘리먼트를 찾을 수 없어 null예외가 발생한다거나 예상한 것과 다른 타입이 들어와서 ClassCast 예외를 일으킬 수 있다. 반면 viewbinding은 xml뷰를 객체로 만들어 처리하기 때문에 번거롭게 findViewById 로.. 2024. 1. 5.
안드로이드 코틀린 fragment 프래그먼트란? -> 액티비티 위에서 동작하는 모듈화된 사용자 인터페이스. 액티비티 없이 독립적으로는 사용 불가능. 모듈형이기 때문에 하나의 프래그먼트를 다른 액티비티에서 사용가능하고 하나의 액티비티 안에 다른 프래그먼트를 보여주면서 여러 화면을 보여줄 수 있다. 바텀 네비게이션이 대표적인 프래그먼트의 예시이다. fragment의 생명 주기 1. onAttach() -> 프래그먼트가 액티비티에 연결될 때 호출.이 시점에는 연결되지 않았다. 2. onCreate() -> 프래그먼트 생성. 초기화, 바인딩 수행 3. onCreateView() -> view를 생성하는 단계. 4. onActivityCreated() -> view가 생성되면 호출되고 view를 초기화한다. 5. onStart() -> 필요한 리.. 2024. 1. 4.
안드로이드 코틀린: recyclerview recyclerview를 설명하기 전에 listview와 gridview를 설명하겠다. 이해를 돕기 위한 것도 있고 시기 상으로 이 둘이 먼저 먼저 나왔고 이 둘의 단점을 보완한 것이 recyclerview이다. gridview와 listview는 리스트를 구현할 때 생성과 삭제를 반복하게 된다. 이들 하나하나가 객체라서 객체의 생성과 삭제를 반복하는 것은 성능 상 좋지 않기 때문에 recyclerview가 나왔다. recyclerview 를 한글로 번역하면 재활용뷰라고 할 수 있다. 말 그대로 생성과 삭제를 하지 않고 썼던 것을 변경해서 다시 쓰는 것이다. 그림을 보면 이해가 빠를 것이다. 왼쪽이 gridview와 listview . 오른쪽이 recyclerview 의 작동흐름이다. recyclervi.. 2024. 1. 3.
코틀린 R.drawble 안에 넣어둔 이미지가 인식이 안될 때(R.drawble 이미지 인식) 분명 이전 프로젝트에서 drawble 폴더 안에 이미지를 넣으면 R.drawble.'이미지 이름' 하면 잘만 나왔는데 인식이 안되고 안드로이드에서 제공하는 기본이미지만 나왔다. 왜 그런가 한동안 검색해봤다. 전혀 생각지도 못한 import에 문제가 있었다. import android.R 2024. 1. 3.