전체 글

개발기록 / 공부한 내용을 정리하는 블로그
프로젝트 개발 중 RecyclerView로 리스트를 구성 후 각 Item의 간격을 조정해 줄 일이 있어 ItemDecoration을 사용하여 구현하였다. RecyclerView의 ItemDecoration Class를 생성 outRect의 left속성에 값을 지정해 주었다. class HorizontalSpaceDecoration(private val leftSpace: Int) : RecyclerView.ItemDecoration() { override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { outRect.left = leftSpace } } RecyclerView에 I..
개발을 하다 보면 동적으로 View들의 위치를 옮겨주거나 크기를 변경하는 등 Layout이나 View들을 코드에서도 바꿔야 할 경우가 생긴다. 코드에서 지정하기 위해 LayoutParam을 사용한 것을 포스팅한다. LayoutParam은 부모 레이아웃 안에서 View(뷰)가 어떻게 배치될지를 정의하는 속성 구체적으로 레이아웃 XML파일에서 앞에 layout_""이 붙는 속성들을 말하며, LayoutParams 클래스의 필드값과 매핑된다. 따라서 코드 상에서 LayoutParams객체를 통해 뷰의 레이아웃 파라미터 속성을 다룰 수 있다. 위와 같은 xml파일에서 andorid:layout_width, andorid:layout_height 가 레이아웃 파라미터이다. LayoutParams 클래스 구조 Vi..
프로젝트를 진행하다 TextView의 text에 원하는 컬러로 외곽선을 그리게 구현해야 할 일이 생겼다. CustomView를 생성해 속성을 추가하여 Canvas로 그려 Text의 외곽선을 그리는 방법이 있어 구현해보았다. attrs.xml 생성 ... //외곽선 사용유무 속성 //외곽선 두께 - dp 사용위해 dimension //외곽선 컬러 CustomTextView 생성 class OutlineTextView : AppCompatTextView { private var stroke = false private var strokeWidth = 0.0f private var strokeColor = 0 constructor(context: Context?) : super(context!!) {} con..
프로젝트를 진행하다 webp 이미지 파일을 표현하기 위해 Fresco의 SimpleDraweeView를 사용하여 동적 Image를 표현하였다. 사용하는 속성들을 알아보기 위해 구글링을 좀 해보았는데 레퍼런스가 다른 것들에 비해 적어 한눈에 보기 위해 포스팅한다. Fresco는 Facebook에서 공개한 이미지로딩 라이브러리 2.3(진저브레드) 이상 버전의 안드로이드를 지원 Fresco의 장점 간편한 이미지 변환 Fresco의 단점 ImageView가 아닌 DraweeView를 사용해야 함 DraweeView가 wrap_content를 지원하지 않아 요청할 이미지의 정확한 사이즈를 지정해야 함 특이사항 SimpleDraweeView는 ImageView를 부모 클래스로 가지고 있다 하지만, 절대로 setIm..
안드로이드 개발을 하다 보면 Context를 자주 사용하게 된다. Context에 대해 정확히 알아보지도 않고 당연스레 사용하다가 이번에 찾아보았다. Context Application 환경에 대한 전역 정보를 접근하기 위한 인터페이스 추상 클래스이며 실제 구현은 Android 시스템에 의해 제공 이를 통해 application 특화 리소스나 클래스 뿐만 아니라 Activity 런칭, 브로드캐스팅, intent 수신 등과 같은 application-level operation을 위한 up-call에 접근이 가능 Context의 중요 핵심 애플리케이션의 현재 상태를 나타냄 Activity와 Application의 정보를 얻기 위해 사용할 수 있음 Resource, Database, Shared Prefer..
USB 케이블이 불편해 케이블을 이용하지 않고 테스트 폰을 연결하는 방법을 알아보았다. Android 11부터 무선 디버깅(wireless debugging)이 추가 되었다. 포스팅에서 이전 버전의 방법과 추가된 기능의 방법을 포스팅 할 것이다. Android 11 이전의 방법 디바이스에서 adb를 위한 TCP/IP port를 열어놓고, PC에서 adb로 디바이스 IP:port 로 연결 1) USB 연결 2) Android Studio 에서 Terminal 실행 : Android Studio 하단에 Terminal을 연다. 3) 다음의 커맨드를 실행해서 adb를 위한 tcpip 포트를 연다. > adb tcpip 5555 뒤에 오는 5555는 포트번호로 사용가능한 포트를 써준다. adb가 터미널에서 실행..
startActivityForResult()가 deprecated된 이유 AndroidX Activity, Fragment에 도입된 Activity Result API 사용을 적극 권장하고 있음 결과를 얻는 Activity를 실행하는 로직을 사용할 때, 메모리 부족으로 인해 프로세스와 Activity가 사라질 수 있음 기존 Activity에서는 startActivityResult를 통해서 콜백을 등록하고, onActivityResult에서 콜백을 처리한다. 두 메서드가 같은 곳에서 구현을 해야하는데, 메모리 부족으로 제대로 동작을 안할 수 있다는 것 - Activity가 종료되었다가 다시 생성되었을 때 Activity에게 결과를 기다리는 중임을 다시 알려야 한다. 기존 API 화면 전환 startActi..
· Java/Etc
Cold Observable vs Hot Observable Observable의 사전 뜻을 찾아보면 관찰할 수 있는, 식별 가능한 이러한 의미를 가지고 있다. 즉, observable은 데이터의 흐름에 맞게 알림을 보내 Observer가 데이터를 사용할 수 있도록 한다. Observable에는 Cold Observable과 Hot Observable이 있다. 일반적으로 우리가 사용하는 것들은 모두 Cold Observable이라고 한다. 자세하게 보기전에 간단하게 유튜브로 Hot Observable과 Cold Observable의 차이를 설명하자면 Cold Observable은 Youtube 동영상을 재생하는 것 처럼, 구독한 순간부터 아이템을 발행시키는 것이고 Hot Observable은 Live 방..
· 기초
'명명법' 코딩 시 변수명, 클래스명, 함수명, View ID명 등등 이름 명명법에 쓰이는 표기법이며 대표적으로 3가지가 있다. "카멜 (camelCase) / 파스칼 (PascalCase) / 스네이크 (snake_case)" 1) 카멜 표기법 "camelCase" 첫 문자 첫글자는 소문자로 표기, 그 이후 연결된 문자들은 첫글자 대문자로 표기 "단봉낙타 표기법" 변수명, 함수명에 사용 'helloWorld' - 첫 문자 hello, 그 이후 문자 World 'kotlinAndroidDeveloper' - 첫 문자 kotlin, 그 이후 문자 Android, Developer 2) 파스칼 표기법 "PascalCase" 모든 문자의 첫글자 대문자로 표기 "쌍봉낙타 표기법" 클래스명에 사용, 가끔 함수에도..
bumjae
Android Technote