반응형 Android & Kotlin/Android18 [Android Kotlin] 네이버 지도 마커 대량 정보에 대한 최적의 카메라 위치 선정 (+클라이언트 처리 이유) 앞선 글에서 네이버 지도에서 마커를 찍을 때 카메라 이동에 대한 로직을 처리한 글을 보셨을겁니다. https://bendeng-life.tistory.com/153 [Android Kotlin] 안드로이드 네이버 지도SDK 사용자 경험 개선 하기 (카메라 이동, 마커찍기)네이버 지도에 마커들을 찍는 과정에 대해서 사용자 경험을 개선하기 위해 계속 발전시킨 과정에 대하여 정리하였습니다. 마커들을 찍는 과정의 발전 순서의 가장 큰 핵심은 zoom Level고정 값 →bendeng-life.tistory.com 그럼 여기서 드는 의문이 하나 왜 서버에서 로직을 처리하지 않고 클라이언트에서 처리를 할까? 라는 의문이 들으실 수 있다고 생각합니다. 우리에게는 굉장히 많은 상황이 존재합니다.편의를 위해 (예시로 내.. 2024. 1. 5. [Android Kotlin] 안드로이드 네이버 지도SDK 사용자 경험 개선 하기 (카메라 이동, 마커찍기) 네이버 지도에 마커들을 찍는 과정에 대해서 사용자 경험을 개선하기 위해 계속 발전시킨 과정에 대하여 정리하였습니다. 마커들을 찍는 과정의 발전 순서의 가장 큰 핵심은 zoom Level고정 값 → LatLng Bounds → zoom Level 유동적인 사용순서로 생각을 해보면서 진행하였으며 사용자 경험을 고려하여 발전 시켰습니다.사용자 경험을 위한 진행 과정zoom Level 고정적 사용마커간의 평균을 계산하여 중간점으로 이동 진행현재 카메라의 위치를 기준으로 가장 가까운 곳으로 이동LatLng Bounds 사용LatLng Bounds를 측정하여 zoom 대신 camera Bounds 사용zoom Level 고정적 사용X현재 카메라를 위치를 고려하여 밀집도와 거리를 계산하여 이동최종 본1-1. 마커.. 2024. 1. 3. [Android Kotlin] 의존성 주입 Hilt, koin 의존성 주입이란?안드로이드에서 의존성 주입은 객체 지향 프로그래밍에서 사용되는 소프트웨어 디자인 패턴 중 하나 입니다.의존성 주입은 객체가 다른 필요로 하는 객체에 대하여 직접 생성하는 것이 아닌 외부에서 주입을 받게 되는 패턴 입니다.의존성 주입은 주로 세 가지 방식으로 이루어집니다.생성자 주입: 의존성을 객체의 생성자를 통해 주입하는 방식입니다.메서드 주입의존성을 메서드의 매개변수를 통해 주입하는 방식입니다.속성 주입: 의존성을 객체의 프로퍼티나 세터 메서드를 통해 주입하는 방식입니다.의존성 주입을 통해 객체는 직접적으로 자신이 필요로 하는 의존성을 생성하지 않고 외부에서 주입받아 사용합니다.이를 통해 결합도를 낮추고, 유연하고 테스트 가능한 코드를 작성할 수 있습니다.Hilt란 무엇인가?Hilt는 .. 2024. 1. 3. [Android kotlin] 안드로이드 Flow vs LiveData ViewModel 관리 : Flow vs LiveData LiveDataLifeCycle 인식을 통한 Observer 패턴LiveData는 안드로이드의 라이프사이클을 인식하므로 관련된 구성요소가 활성 상태일때만 데이터가 업데이트 되므로 메모리 누수나 비정상적인 UI 갱신을 방지하는데 도움이 된다데이터가 변경될 때마다 등록된 Observer에게 알림을 보내 UI갱신을 하는 패턴 사용.1. UI와 데이터 상태의 일치 보장2. 메모리 누수 없음3. 중지된 활동으로 인한 비정상 종료 없음4. 수명 주기를 더 이상 수동으로 처리하지 않음5. 최신 데이터 유지6. 적절한 구성 변경 : 기기 회전 혹은 다시 액티비티나 프래그먼트가 생성되면 최신 데이터를 받아옴 7. 리소스 공유Flow코루틴에서 Flow는 단일값을 반.. 2024. 1. 2. [Android kotlin] 네트워크 메니저로 사용자 경험 개선하기 (Connectivity Manager) 네트워크 설정 공식 레퍼런스https://developer.android.com/training/basics/network-ops/reading-network-state?hl=ko 네트워크 상태 읽기 | Connectivity | Android Developers네트워크 상태 읽기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android에서는 앱이 연결의 동적 변경사항을 학습할 수 있습니다. 다음 클래스를 사용하여developer.android.com 우리는 앱을 사용하다 보면 네트워크의 연결에 대한 알림을 주는 것을 많이 볼 수 있다. 네트워크 연결 상태를 관리하고 모니터링하여보다 사용자에게 편리함을 제공해주고자 이 부분에 대해서 공략을 해보고자 하였습니다. .. 2024. 1. 2. [안드로이드 코틀린] 리사이클러뷰 뷰타입에 따른 설정 (실습 : 채팅방) 채팅방에 대한 리사이클러뷰를 통해 진행을 하려할때 뷰타입에 따른 설정을 진행하는 것에 대한 예제에 대한 학습을 적으려 합니다. 알고보면 간단하지만 알기전에는 힘든 친구가 아닐까 생각하네요. val chatAdapter = ChattingChatAdapter(chatList) binding.rvChattingChat.apply { adapter = chatAdapter layoutManager = LinearLayoutManager(context,LinearLayoutManager.VERTICAL,true) } viewModel.messageList.observe(viewLifecycleOwner, Observer { messages-> messages.forEach {chatAdapter.addMessa.. 2023. 5. 13. [안드로이드 코틀린] 바텀네비게이션 프래그먼트 전환시 상태 유지 바텀 네비게이션을 전환만 한다고 생각을 하지만 우리는 카카오톡 애플리케이션을 보게 되면 친구창에서 바텀 네비게이션에 있는 다른 채팅을 가게 되었을때 다시 친구 창에 돌아오면 위치를 저장하는 것을 보실 수 있습니다. private fun runBottomNavi() { binding.btmNavMain.run { setOnItemSelectedListener { item -> val selectedFragment: Fragment = when (item.itemId) { R.id.btm_home -> HomeFragment() R.id.btm_chatting -> ChattingFragment() R.id.btm_post -> PostFragment() R.id.btm_profile -> ProfileFr.. 2023. 5. 9. [코틀린] 안드로이드 리사이클러뷰 특정뷰(아이템) 클릭 뷰홀더에서 클릭시 로그를 찍어봤을때 adapterposition이 나오게 되는것을 확인할 수 있다. 그렇다는것은 이미지도 여기서 설정을 해줄 수 있지 않을까 생각한다. 그리고 다음에 혹시 뭐 즐겨찾기 추가를 했을때 그에 대해서 서버에 통신을 보내주면서 추가를 해주는것도 앞으로 가능하다고 생각한다. class RestaurantAdapter(var restaurantList: List) : RecyclerView.Adapter(){ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RestaurantViewHolder { val binding = RestaurantListBinding.inflate(LayoutInflater.from(p.. 2022. 12. 29. [코틀린] 안드로이드 플로팅버튼 이미지 조절, 버튼 클릭시 최상단, 스크롤이벤트 우리가 대게 floatingactionbutton을 띄우게 되면 이러한 형식이 나오게 되어 매우 당황하게 된다. 이럴때 어떻게 해결해야할까? 가본적으로 fab에서 크기 변경을 지원하지 않기 때문에 크기를 수정할 수가 없는 현상이 발생하는 것이다. 따라서 res → value에 dimens.xml을 만들어 아래와 가티 추가를 진행해주었다 37dp 40dp 전체 버튼의 크기와 그 안의 사진의 크기를 설정을 진행해줍니다. 그리고 사용하려는 floatingbutton에서 app:fabSize=”normal”을 추가해주면 해결이 된다. private fun ScrollUp(){ binding.fabScrollUp.setOnClickListener{ binding.nestedScrollView.fullScroll(.. 2022. 12. 29. viewpager2 이미지 자동 스크롤 (recyclerview활용) 기존 viewpager에서 viewpager2를 사용하는 이유 Orientation 추가 →Horiaontal Paging에서 VerticalPaging도 지원이 가능해짐 RTI페이징 가능 notifyDatasetChanged를 이용한 동적 페이지 가능 필요한 것들 및 개념 정리 image를 출력해주는 xml 이미지를 출력해주는 viewpager 배열에 저장할 image모음 recyclerview 우선 우리가 활용하는 리사이클러뷰와 개념이 아주 매우 흡사하다. 리사이클러뷰에 대한 이해를 하였다면 viewpager2를 문제없이 구상할 수 있다. 또한 이미지가 넘어가는것은 따로 진행해주기 때문에 thread를 활용한다는것을 기억해야한다. 우선 활용할 layout .xml에 추가를 viewpager를 추가해준.. 2022. 12. 28. [코틀린] 안드로이드 sharedpreferences 개념 및 활용 예제 SharedPreferences란? DB에 저장해야할 정도의 데이터의 양이 많으것이 아닌 간단한 설정값이나 문자열과 같은것을 저장하기 위해 DB의 사용이 부담될때 SharedPreferences를 사용하는것이 적합함 SharedPreferences의 특징 초기 설정값이나 자동 로그인 여부 등 간단한 값을 DB에 넣지 않고 저장하기 위해 사용 key-value방식을 사용 저장 경로: data/data/패키지명/shared_prefs/SharedPreference명.xml 에 저장. MainActivity.kt class MainActivity : AppCompatActivity() { val binding by lazy {ActivityMainBinding.inflate(layoutInflater)} ov.. 2022. 12. 3. [kotlin] 안드로이드 액티비티 생명주기 이해 및 예제 Oncreate() 시스템이 활동을 생성할때 실행되는 것으로, 필수적으로 구현을 해야함 전체 생명주기 동안 한번만 발생해야하는 기본 어플리케이션 시작로직을 실행함 Oncreate() 메스더에 관한 예시로는 사용자 인터페이스 선언, 멤버 변수 정의, 일부 UI구성, 등의 활동에 관한 기본 설정을 보여준다. OnStart() 활동이 시작됨 상태에 들어가게되면 시스템은 OnStart()을 호출합니다. 호출됨으로써 활동이 사용자에게 표시되고 앱은 활동을 포그라운드에 보내 상호작용할 수 있도록 준비. 빠르게 완료되고 활동은 여기에 머물지 않는 특징 → 콜백이 완료되면 활동이 재개됨 상태에 들어가고 OnResume메서드를 호출 OnResume() 활동이 재개되는 상태에 들어가게되면 포그라운드에 표시되고 시스템이 O.. 2022. 12. 2. 이전 1 2 다음 반응형