본문 바로가기

Android42

[ Android ] Android 레이아웃 재사용의 마법사: Include 태그와 데이터 바인딩 활용하기 include 태그는 안드로이드 레이아웃 작업을 할 때 매우 유용하게 활용 되는 태그이다. 이를 통해 하나의 레이아웃 파일을 다른 레이아웃 파일에 포함시킬 수 있으며, 이는 코드의 재사용성의 높이고 레이아웃 관리의 효율성을 개선하는 데 큰 도움이 된다. 예를 들어, 여러 화면에서 공통적으로 사용되는 헤더나 푸터 같은 UI 요소가 있다면, 해당 요소들을 별도의 레이아웃 파일로 만들어 두고, 각 화면의 레이아웃에서 include 태그를 사용해 해당 레이아웃 파일을 포함시킴으로써 여러 곳에서 이를 재사용할 수 있다. 이 방법을 통해 중복 코드를 줄이고, 유지 보수를 용이하게 만든다. 사용 방법은 1. 재사용할 레이아웃 파일 생성: 먼저, 재사용할 레이아웃 파일을 먼저 만들어주면 되는데 상단 바와 같이 레이아웃.. 2024. 3. 25.
[ Android ] Android에서 전역 상태 관리: Application 클래스 활용하기 시스템바 알림 기능을 구현하는 과정에서, 알림 시간을 표현하기 위해 "오전"과 "오후"와 같은 문자열 값을 리소스에서 불러오려면 context가 필요했다. 하지만 Utils 클래스에서는 context를 직접 참조할 수 없었다. 이 문제를 해결하기 위해 WallPadApp.java 클래스에서 context를 반환하는 함수를 사용했다. 이 과정에서 WallPadApp 클래스의 목적과 그 안에 정의된 함수나 값들이 어떻게 분류되어 있는지에 대한 궁금증이 생겼다. WallPadApp 클래스를 살펴보니, 이는 Application 클래스를 상속받아 커스터마이즈되어 있었다. 공식문서를 찾아보니, 전역 애플리케이션 상태를 유지하기 위한 기본 클래스입니다. 하위 클래스를 생성하고 이 하위 클래스의 정규화된 이름을 "a.. 2024. 3. 25.
[ Java ] Java에서 문자열 처리의 효율성을 높이는 방법: StringBuilder 활용하기 StringBuilder는 Java에서 문자열을 효율적으로 처리하기 위한 클래스다. 문자열 알고리즘 문제를 풀다가 알게된 자바 클래스인데, 일반적으로 문자열을 연결하거나 수정할 때 사용되며, 가변적인 문자열을 다루는데 유용하다. 기존의 String 클래스는 불변 이기 때문에 문자열을 수정할 때마다 새로운 문자열 객체를 생성하게 된다. 이로 인해 문자열 연산이 많은 경우 메모리와 성능에 부담을 줄 수 있다. 이러한 문제를 해결하기 위해 나온 것이 바로 StringBuilder 클래스 이다. StringBuilder는 가변적이며, 내부적으로 가변 크기의 문자열 버퍼를 가지고 있다고 한다. 따라서 문자열을 추가하거나 수정할 때마다 새로운 객체를 생성하지 않고도 효율적으로 처리 할 수 있게 되는 것이다. Str.. 2024. 3. 22.
[ Android ] 안드로이드 개발에서 HtmlCompat.fromHtml을 이용한 HTML 태그 적용: CDATA와 이스케이프 문자 활용법 다음과 같이 텍스트의 색상이 달라지는 레이아웃을 구현을 해야 하는 상황이었다. "비상 버튼을 3초이 눌러\n 발생 또는 해제" 위와 같은 한 문장의 레이아웃을 만들기 위해서 TextView를 세 개씩 사용하는 방식은 레이아웃구조를 지나치게 길어지게 만들어 비효율 적이라는 생각이 들었다. 레이아웃 구조를 늘리지 않고 텍스트의 색상을 바꿔줄 수 있는 방법이 없을 지 찾아 보았고, HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY);를 사용하여 코드상으로 구현을 할 수 있다는 것을 알아내었다. 사용 방법은 private String unmodeDesHtmlText = "5회 연속 빠르게 탭하여 시각 장애인 모드를 해제"; private String cal.. 2024. 3. 21.
[ Java ] Integer.parseInt(String s, int radix)를 활용한 자바에서의 진법 변환 기술 2진수를 10진수로 바꿔주는 로직을 짜다가 알게 된 메서드이다. 처음에는 char[] stringArray = str.toCharArray(); String binaryNumber = String.valueOf(stringArray); int decimalNumber = 0; int power = 0; for (int i = binaryNumber.length() - 1; i >= 0; i-- ){ int digit = Character.getNumericValue(binaryNumber.charAt(i)); decimalNumber += digit * Math.pow(2, power); power++; } 이런식으로 일일히 반복문을 돌며 2의 제곱수를 곱해주는 방식으로 구현을 해 줬었는데, 자바에 주어.. 2024. 3. 20.
[ Java ] 자바에서 "1"과 '1'의 차이점: 문자열과 문자 할당 이해하기 알고리즘을 풀다가 알게 된 사실을 정리 해 두고자 한다. 다음과 같이 String 값을 char[]로 바꾼 상황에서 반복문을 돌며. 문자 c가 "#"과 같을 경우 이진수인 "1"로 바꿔주고자 한 로직이었는다. 발견한 의문점은 stringArray[i] = '1'; 로 할 경우에는 에러가 뜨지 않는데, stringArray[i] = "1"; 로 했을 경우에는 다음과 같이 Type mismatch 에러가 난다는 것이었다. 위 현상이 왜 일어나는 것인지 찾아보니, stringArray[i] = '1';은 문자형(char)으로 '1'을 할당하는 것이므로 작은 따옴표 안에 있는 문자는 문자형으로 인식되며, char 타입에 저장이 된다. 반면에 stringArray[i] = "1";은 큰 따옴표(")로 감싸진 문자.. 2024. 3. 19.