전체 글

memoText.text = Html.fromHtml(timeBlock.description?.replace("\n", ""))- 위와 같은 코드가 존재한다. Html.fromHtml()을 사용하여 HTML 태그를 포함한 문자열을 Spanned 형태로 변환하여 TextView에서 HTML 렌더링을 할 수 있게 하는 코드이다. - replace("\n", "")를 통해 개행(\n)을 태그로 변환하여 HTML에서 줄 바꿈을 유지하도록 한다. - 그런데, 사용자가 만일 EditText에 이런식으로 입력해 버리면 통째로 사라져 버린다. 그래서 입력된 문자를 HTML 엔티티로 변환하는 과정이 필요하다. fun fromHtmlSafe(source: String?): Spanned { val safeTex..
- height를 코틀린에서 wrap_content로 변경해 봅니다.- adjustViewBounds는 이미지뷰를 경계선에 따라 조정할지 여부입니다. background에 커스텀 레이아웃을 사용할 때 유용합니다.val layoutParams = binding.previewImg.layoutParamslayoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENTbinding.previewImg.layoutParams = layoutParams
먼저 둥근 테두리 모양에 해당하는 XML을 구성해 줍니다. ImageView 자체의 background로 지정해 주고. clipToOutline을 true로 해줍니다.clipToOutline : 뷰의 개요를 사용하여 뷰의 내용을 클립 해야 하는지 여부
AAC(Android Architecture Components)란?AAC는 안드로이드 앱 개발을 쉽게 만들기 위해 제공되는 아키텍처 구성 요소앱 개발 시 라이프사이클 관리, 데이터 저장, UI 상태 관리 등을 표준화MVVM 패턴과 함께 사용하면 유지보수성과 확장성이 뛰어난 앱을 개발 가능AAC 주요 구성 요소ViewModel : UI 데이터를 저장하고 라이프사이클을 관리LiveData : 데이터 변경을 감지하고 UI에 반영Room : SQLite DB를 관리하는 ORM 라이브러리LifeCycle : Activity / Fragment의 라이프사이클을 관리ViewModel- UI 데이터를 관리하고 라이프사이클을 유지하는 역할- ViewModel을 사용하면 화면 회전 시 데이터가 유지됩니다.class My..
- 앱에서 활용하던 GIF 파일들이 많아지면서 용량이 증가하고 관리 비용에도 점점 문제가 생기기 시작했습니다. - 이에 따라 애니메이션 재생에도 뒤처지지 않고, 용량도 더 적은 WebP 파일을 활용하기로 결정했습니다. - Glide를 활용해 렌더링을 진행했는데, 사실 기존 GIF 파일 재생 방법과 큰 차이가 없습니다. 같은 로직으로 두 가지 종류 파일 모두 호환 가능합니다. - WebP가 GIF보다 나은 점들은 아래와 같습니다. - raw 폴더 하위에 webp 파일을 넣고, Uri 경로를 구성해주어야합니다.val resourceUri = Uri.parse("android.resource://${context.packageName}/${R.raw.test}") - 해당 Uri 기반으로 로드해 줍니다. ur..
YIQ란?YIQ는 NTSC TV 신호에서 사용된 색 공간(Color Space)아날로그 TV 방송에서 흑백 TV와 컬러 TV를 동시에 지원하기 위해 설계됨RGB보다 밝기와 색상 정보가 분리되어 있음 → 밝기 기반 이미지 처리에 유용Y(Luminance, 밝기), I(In-phase, 색상 성분), Q(Quadrature, 색상 성분)로 구성됨YIQ의 구성 요소- Y (Luminance, 밝기) : 이미지의 밝기(명도) 정보 (흑백 TV에서도 사용 가능)- I (In-phase, 색상 차 성분 1) : 주황색(Orange) ↔ 청록색(Cyan) 색상 정보- Q (Quadrature, 색상 차 성분 2) : 자홍색(Magenta) ↔ 녹색(Green) 색상 정보YIQ와 RGB 변환 공식- RGB → YIQ ..
1. 코틀린에서의 람다 표현식이 무엇인가?- 람다 표현식은 함수를 명시적으로 선언하지 않고도 함수와 유사한 구조를 정의하는 간결한 방법입니다. - 인수로 전달하거나 변수에 저장할 수 있는 코드 블록을 만들 수 있습니다. - 람다 표현식은 간결하고 인라인 함수 동작을 제공하는 데 유용합니다.val sum = { a: Int, b: Int -> a + b } // Lambda expressionval result = sum(3, 4) // Invoking the lambda expressionprintln(result) // Output: 7 2. 코틀린에서 고차 함수란 무엇인가?- 고차 함수(High-Order Function)란 다른 함수를 인자로 받거나, 함수를 반환하는 함수를 의미합니다.- 함수를 변..
Hex Code(16진수 색상 코드)란?16진수(HEX, Hexadecimal)로 표현된 색상 값RGB(Red, Green, Blue) 색상을 조합하여 색을 나타냄웹 개발, 그래픽 디자인, 모바일 UI 등에서 자주 사용됨- 서비스에서는 이런 코드 값을 사용자 테마 등에 따라 API를 통해 다양한 값으로 클라이언트에 전달하곤 합니다.- "#FCFEF8" 형태로 수신되었다면 이것을 Color 객체로 변환하는 과정까지 확인해 보겠습니다.val color = Color(Color.parseColor("#FCFEF8"))- 정수 값으로 변환한 후, Color 객체로 감싸는 방법입니다.- 투명도를 추가하고 싶다면 #AARRGGBB 형식으로 사용 가능합니다. val color = Color.valueOf(Color...
- getIdentifier()는 이름(String)으로 앱의 리소스 ID를 가져오는 함수입니다.resources.getIdentifier(name: String, defType: String, defPackage: String) name: 찾고 싶은 리소스의 이름 (문자열)defType: 리소스의 종류 (drawable, string, layout, id, color 등)defPackage: 패키지 이름 (context.packageName을 사용하면 현재 앱의 패키지)- Drawable 리소스 반환하기context.resources.getIdentifier("ic_weather_sunny_day", "drawable", context.packageName) 만일 조건에 해당하는 리소스가 존재하지 않으..
- view는 id 외에 tag로도 접근 가능합니다.val targetView = (this as ViewGroup).findViewWithTag(number.toString())targetView?.visibility = View.GONE - XML이 아닌 코드에서 수정targetView.tag = "001"