본문 바로가기

전체 글

(90)
View Lifecycle ※※ 그저 공부하는 흐름대로 작성한 것이니 정돈된 글이 아님 주의 ※※ View Lifecycle Constructor 모든 뷰는 생성자에서 출발 -> 생성자에서 초기화 -> defalut 값 설정 뷰는 초기 설정을 쉽게 하기위해 AttributeSet 인터페이스 지원=> 먼저 attrs.xml파일을 만들고 이걸로 뷰의 설정을 쉽게 한다. onAttachedWindow 부모 뷰가 addView(childView)를 호출 -> 자식 뷰는 윈도우에 붙음(attached) 이때부터 뷰id를 통해 접근 가능. onMeasure 뷰의 크기를 측정하는 단계. 대부분 레이아웃에 맞게 특정 크기를 가져야함. 세 단계 과정이 있음 1) 뷰가 원하는 사이즈 계산 2) MeasureSpec에 따라 크기와 mode를 가져옴 ..
View가 그려지는 과정 ※※ 그저 공부하는 흐름대로 작성한 것이니 정돈된 글이 아님 주의 ※※ View가 그려지는 과정 뷰 포커싱 -> 레이아웃 그리도록 요청 -> 루트노드(최상단 부모 뷰)에서부터 트리를 따라 전위순회 -> 부모 뷰는 자식 뷰 뒤에 그려짐 -> 형제 뷰는 전위 방식에 따라 그려짐 ( 즉, 그저 전위순회를 따라 그려짐. 다만 먼저 그려지는 부모 뷰는 자식 뷰의 뒤에 그려진다는 것을 생각.) 전위순회(Pre-order Traversal) root -> Left -> Right ( 부모노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 노드) A - B - C - E - D - F - G 레이아웃을 그리는 과정은 측정(measure) 단계와 레이아웃(layout)단계로 그려진다. measure 메서드 public fina..
[ JAVA ] 자바는 call by value? call by reference? 결론: 자바는 call by value입니다 => Call by reference는 원본의 주소값을 전달하므로, 원본을 변경할 수 있습니다. 왜냐하면 주소값을 통해 원본에 접근할 수 있기 때문입니다. 자바에는 포인터 같은 변수의 주소값을 추출 및 저장하는 기능이 없습니다. 그렇기에 call by reference가 될 수 없습니다. (아래 글은 참조에 관해 이해를 하시고 나서 보는 걸 추천드립니다.) 2021.03.24 - [gyub's 공부일기/Java] - [ JAVA ] 참조란? Call By Value ( 값에 의한 호출 ) Call By Value는 원본 값을 그대로 복사하여 매개변수로 전달하는 것입니다. public class JavaIsCallByValue { public static voi..
[ JAVA ] 참조란? TMI 자바를 공부하다보면 '참조' 라는 단어를 많이 보셨을거에요 이 '참조'라는 것을 공부를 해도...강의를 들어도.. 느낌상으로는 대충(?) 알겠지만 막상 온전히 제 것이 되는 느낌은 받지 못하셨던 분들을 위해 글을 써보겠습니다. (사실 제가 리마인드 차원에서 쓰는 글이에요,,, ) 얼마전에 자바를 입문한 친구가 참조를 정확히 자신에게 설명해줘라 라고 했을 때 "아 이게 그러니까..음 인스턴스가 있고 ,,," 뭐 깔끔하게 정리해서 설명이 잘 안 되더라구요 🤣 그럼 이제 '참조'란 무엇인지에 대해서 말해보겠습니다. 참조란 (아래 예제는 생활코딩-참조 편을 인용했습니다.) int a = 1; int b = a; System.out.println(a); 위의 코드에서 출력은 어떻게 될까요? 당연하게도 1이..
[ Android ] JAR 와 AAR(feat. 이클립스에서 안드로이드 스튜디오로) TMI 회사에서 저에게 주어진 첫 미션은 이클립스로 구현되어있던 안드로이드 프로젝트를 안드로이드 스튜디오로 마이그레이션 하는 작업이었어요. (바쁘신 분은 아래로 쭉 내리시면 됩니다!) 너무너무너무 고단했습니다... ( 마이그레이션하고는 그닥 상관없지만,,,한 클래스 파일에 6천줄!!!!!!!!!!!!!!!!!!!!!!!!! 어질어질..) 이클립스로는 한 번도 안드로이드를 개발해본 경험이 없었거니와 안드로이드 실력도 아직은 베이비 개발자 수준인지라 자바와 xml 코드는 상관없었지만 gradle에서 본 적도 없는 코드들과 알아들을 수 없는 주석들이 상당했거든요. 그래도 여차저차해서 마이그레이션에 성공했습니다! 이 과정에서 가장 기억에 남는것이 있었는데요. 바로 JAR와 AAR의 차이로 생긴 이슈입니다! 이것..
[ Android ] PNG와 SVG dp, dpi등에 대한 글을 읽고 보시면 더 좋을 것 같아요! 개발을 할 때 사용하는 디자인 포맷의 종류는 png, svg, gif, lottie가 일반적이고, 이미지를 위한 png, svg, 9-patch(나인 패치)와 애니메이션을 위한 lottie로 나누어집니다. 이번 글에서는 PNG와 SVG에 대해서만 다뤄보겠습니다. ( jpg, gif도 사용하기는 하지만 안드로이드에서는 권장하지 않습니다) 1. PNG png의 경우 사이즈가 픽셀단위로 정의되기 때문에 해상도에 따라 이미지의 사이즈가 의도와 다르게 바뀔 수 있습니다. 이를 방지하기 위해 안드로이드에서는 drawable 폴더를 각 dpi값에 따라 나누어 놓았는데, 기본 제공되는 dpi는 아래를 참고하시면 될 것 같아요. 안드로이드에서 제공하는 기본 ..
[ Android ] DP란? SP? PX!? DPI..? 안드로이드 개발을 하다보면 이 화면을 많이 보셨을 거에요. 이렇게나 많은 단위들이 있지만 보통 dp와 sp를 많이 사용하기에 별로 신경을 안 쓰고 있었는데요. 이번에 DP와 SP에 대해 정리하며 다른 단위들도 간단하게 설명하고자 합니다. 1. DP ( Density-independent Pixel ) DP는 디스플레이의 해상도(밀도)와 상관없이 다룰 수 있는 단위라고 보시면 됩니다. 즉, 화면의 크기가 달라도 동일한 비율로 보여주기 위해 안드로이드에서 정의한 정확한 단위이며 큰 화면, 작은 화면에 상관없이 같은 크기로 나타냅니다. 사용중인 화면의 실제 밀도에 따라 시스템이 런타임에 dp단위의 모든 확대/축소를 투명하게 처리한다. 그래서 화면의 크기가 다양한 안드로이드에서는 dp가 자주 쓰이곤 하죠. 2...
[ 알고리즘 ] 시간 복잡도 구하는 법 시간 복잡도에 대해서 많이 들어보셨을텐데요. 이 시간 복잡도를 구하는 방법을 알아보겠습니다. 시간 복잡도란? 기본적인 연산을 수행하는데에 어떤 고정된 시간이 걸릴 때, 알고리즘에 의해서 수행되는 기본 연산의 개수를 세어 예측할 수 있다. 그러므로 걸리는 시간의 총량과 알고리즘에 의해 수행되는 기본적인 연산의 개수는 최대 상수 인자만큼 다르다. - 위키피디아- 시간 복잡도의 종류에는 크게 3가지가 있습니다. => O(Big-O), Ω(Omega), Θ(Theta) 보통은 Big-O 표기법을 사용하여 시간 복잡도를 나타내기 때문에 Big-O 표기법만 다뤄보겠습니다. ( 더 궁금하신 분들은 검색을,,) 코드를 예시로 하여 좀 더 알아보겠습니다. int sum = 0; for(int i =0; i