전체 글 53

[Compose] 컴포즈 공부하기2 - Surface, Box 어떤 차이가 있을까?

Surface - Material Design 스타일이다. (elevation, shape, color..) - light/dark 테마에 따라 적용 가능 - XML의 MaterialCardView와 유사 Box - 단순히 container로써 역할 - 정렬, 간격 등을 적용하기 유용 예시를 통해 비교해 보자! 1. 동일하게 만들기 Column { Surface( modifier = Modifier.padding(5.dp), color = Color.Green ) { Text( text = "Hello $name!", modifier = Modifier.padding(8.dp) ) } Box( modifier = Modifier.padding(5.dp).background(Color.Green) ) { ..

SOLID 원칙을 알아보자 2 : 개방-폐쇄 원칙 - kotlin

SOLID 원칙이란? Single Responsibility Principle → 단일 책임 원칙 Open-Closed Principle → 개방-폐쇄 원칙 Liskov Substitution Principle → 리스코프 치환 원칙 Interface Segregation Principle → 인터페이스 분리 원칙 Dependency Inversion Principle → 의존성 역전 원칙 Open-Closed Principle 개방-폐쇄 원칙 소프트웨어 개체는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다 열려 있다(Open) - 새로운 기능을 추가 할 수 있으며, 추가 시 큰 힘을 들이지 않고 추가 닫혀 있다(Close) - 수정에 대해서는 폐쇄적이여야함 - 코드를 수정해도 이를 ..

[Compose] 컴포즈 공부하기1 - Modifier 란?

Modifier 다음과 같은 작업을 할 수 있다. 컴포저블의 크기, 레이아웃, 동작 및 모양 변경 접근성 라벨과 같은 정보 추가 사용자 입력 처리 요소를 클릭 가능, 스크롤 가능, 드래그 가능 또는 확대/축소 가능하게 만드는 높은 수준의 상호작용 추가 Text를 통해 알기 쉽게 몇가지 예시를 알아보자. 1. 기본 Text Text( color= Color.Blue, text = "Hello, Android") Modifier를 주지 않은 기본 Text는 이렇게 나오게 된다. 2. 크기 Text( color= Color.Blue, text = "Hello, Android", modifier = Modifier.size(100.dp) // 또는 Modifier.size(width = 100.dp, heigh..

SOLID 원칙을 알아보자 1 : 단일 책임 원칙 - kotlin

SOLID 원칙이란? Single Responsibility Principle → 단일 책임 원칙 Open-Closed Principle → 개방-폐쇄 원칙 Liskov Substitution Principle → 리스코프 치환 원칙 Interface Segregation Principle → 인터페이스 분리 원칙 Dependency Inversion Principle → 의존성 역전 원칙 Single Responsibility Principle 단일 책임 원칙 어떤 클래스나 모듈은 변경하는 이유가 한 가지여야만 한다 - Robert C. Martin 클래스나 모듈이 하나의 책임만을 가지고 있어야 한다는 것이다. 클래스나 모듈이 여러가지 작업을 한다면, 강하게 결합되어 있는 클래스나 모듈이 많이질 것이고..

android gesture mode 일 때 태스크바 task bar 관련 높이 구하기(sdk30↑) - status bar만 transparent 값 주기

*22년 11월 기준 작성 구현해야하는 뷰의 조건은 총 5가지였다. 1. 상단의 status bar는 투명이여야 한다. (풀스크린) 2. 버튼은 네비게이션 위에 있어야한다. 3. 스크롤이 맨 상단 일 경우 상태바의 텍스트가 흰색이 되어야 한다. 4. 내용이 스크롤 되면 상태바의 텍스트는 검은색이 되어야 한다. [처음에 작성했던 코드] if(!black){ val decorView = window.decorView if(Build.VERSION.SDK_INT>=30) { window.setDecorFitsSystemWindows(false) }else{ decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE or View.SYSTEM_UI_FLAG_L..

2023 퇴사회고록!

약 2년 전인 21년에 들어갔었던 회사에서 저번 달을 끝으로 퇴사하게 되었다. 연차에 비해 많은 걸을 해보았다고, 윗 분들에게 믿고 신뢰할 수 있다는 말을 듣고 기쁘기도 했지만 내 자신도, 회사도 더 이상 발전을 기대하기 어려운 상황이였다. 동료들이 너무 좋고, 하나부터 열까지는 아니지만 둘부터 열까지는 전부 내가 하나하나 만들고 또 뜯어고친 앱이라서 애정도 컸다. 자그마한 기능하나만 있었던 앱이 결제도 붙고 광고도 하고 정말 많은 기능이 붙고 또 사라지고 또 어엄청나게 많이 수정이 되었다.. paging 하나 제대로 못해서 이틀을 고민하고 밤잠 이루던 나는 어느새 기능하나 새로 붙거나 수정이 들어가도 1-2주면 큰 오류없이 끝내버리는 코린이가 되었다. (아직 안나온 오류일 수도 있지만!) MVVM도 제..

개발 일기 2023.07.24

android recyclerview 화면에 보이는 아이템 위치와 activity에서 수정하기

목표 : 스크롤 할 때마다 현재 recyclerview에서 보이는 위치를 가져와서 activity에서 recyclerview item의 백그라운드 색을 수정 1. 현재 보이는 아이템 위치 가져오기 findFirstVisibleItemPosition() findFirstCompletelyVisibleItemPosition() findLastCompletelyVisibleItemPosition() findLastVisibleItemPosition() findFirstVisibleItemPosition, findLastVisibleItemPosition은 화면에서 가장 상단, 하단에 보이는 아이템의 위치로서 전체가 온전히 보이지 않고 일부만 보이는 상태이다. findFirstCompletelyVisibleIt..

android textView의 text 복사하기-(ClipboardManager, textIsSelectable)

textView의 text를 복사하는 데에는 2가지 방법이 있다. text를 선택할 수 있게 하는 textIsSelectable을 사용하는 방법과 clipboard를 사용하는 방법이 있다. ​ 1. textIsSelectable ​ TextView에 textIsSelctable을 true로 하면 textView를 롱클릭했을 경우 선택이 가능해진다. (textColorHighlight에 색을 넣는 다면 해당색으로 선택이 된다.) ​ 일반 텍스트, 주소, 전화를 두고 롱클릭을 한다면 위의 사진 처럼 자동으로 인식해서 주소일 때는 지도, 전화번호일 때는 전화걸기가 뜬다. ​ ​ 2. ClipBoardManager 보통 롱클릭시 작업을 하며, 선택이 없이 원하는 텍스트를 코드로 지정하여 클립보드에 넣게한다. v..

recyclerview 더 효율적으로 사용하기 - ListAdapter와 DiffUtil

기존에 reyclerview의 adapter를 만드려면 Reyclerview.Adapter을 사용해왔다. 해당 방식을 사용하려면 어뎁터 내의 리스트도 관리를 해야했고 데이터를 넣거나 변경, 삭제하는 등이 변화가 있을 경우 일일이 변경처리를 해야했다. (notifyItemInserted(), notifyItemRemoved(), notifyItemRangeChanged().....) ​ 변동이 있어 전체 내역을 업데이트 해야해서 내역을 삭제하고 다시 불러오는 경우, 몇 개만 변동되는데 전체를 업데이트 하다보니 지연시간이 있을 수 밖에 없고 그만큼의 불필요한 비용도 생기게 된다. ​ 이러한 비용을 줄이고자 나온게 DiffUtil 이고, 이 DiffUtil을 활용해 리스트를 업데이트 시키는 기능을 가진 것이 ..

android contextMenu - 선택지 띄우기, recyclerview

contextMenu란? 윈도우에서 해당 화면에 오른쪽 클릭을 했을 때 나오는 메뉴(선택지)처럼 안드로이드에서도 동일하게 해당 뷰를 길게 클릭하면 나오는 메뉴들을 말한다. 1. activity에서 contextMenu 사용하기 예시) 전화번호를 클릭하면 해당 전화번호를 전화를 걸지, 메시지를 보낼지, 복사할 지 선택하는 메뉴 띄우기 1-1 해당 반응을 받을 뷰를 작성→registerForContextMenu(해당 뷰) 1-2 onCreateContextMenu 에 띄울 메뉴 설정 override fun onCreateContextMenu( menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo? ) { super.onCreateContex..