분류 전체보기
-
[Compose] LazyVerticalGrid 버벅거림 현상 해결해보기Android 2025. 4. 25. 18:12
테스트 기기 : 갤럭시 s8(Android 9) tab layout과 compose의 LazyVerticalGrid를 사용해 ui를 만들었다.포스팅의 이미지가 여러 개 보이는데, 문제는 다음과 같았다 1. 이미지 로드 속도가 느리다2. 스크롤을 할 때 버벅거리는 현상이 발생한다 이미지의 경우 coil을 사용해 불러오고 있었고스크롤을 할 때 버벅거림이 생기는 것은 불러올 포스팅의 갯수가 많아지면 점점 더 심해졌다사용자들이 만약 이 앱을 사용한다면 버벅여서 불편함을 겪었을 것이다(나같으면 신고했음) 처음에는 이러한 문제들 때문에 이미지를 업로드할 때 bitmap.compress를 사용해서 이미지 파일의 크기를 70% 수준으로 압축해서 줄였으나 소용이 없었다^^... 메모리 덤프를 떠보고 네이티브 사이즈를 보..
-
[Android] Splash Screen 만들기 (with Lottie)Android 2024. 12. 26. 08:00
프로젝트를 하다가 splashScreen을 만들고 싶어서 찾아보게 되었다내가 한 방법이 100% 정답은 아님 1. dependency 설정dependencies { implementation("androidx.core:core-splashscreen:1.0.0")} 2. theme에 splash관련 속성 지정 windowSplashScreenBackground : 스플래시 스크린 백그라운드에 적용할 색상windowSplashScreenAnimationIcon : 스플래시 스크린에서 보여줄 아이콘postSplashScreenTheme : 스플래시 스크린 테마 이후로 보여줄 테마 windowSplashScreenAnimationIcon에 설정해야하는 이미지는 공홈에서 다음..
-
[Android] Activity, Fragment, FragmentView LifeCycleAndroid 2024. 12. 25. 18:00
라이프사이클이 좀 헷갈려서 다시 정리해봄 Activity는 뭘까?앱이 수행하는 작업(task)의 기반이 되는 요소이고, 앱과 사용자의 상호작용을 위한 진입점 역할 및 ui를 구성하는 역할을 하는 컴포넌트이다 점점 단말기 성능은 좋아지고 있지만 메모리는 pc에 비해서 제한되어있다따라서 제한된 메모리를 효율적으로 관리해야한다. 따라서 앱이 실행되는 동안 앱을 구성하는 컴포넌트들의 생명주기와 상태변화를 관리해야한다 예를 들면 사용자들이 앱을 실행시켰다가 다른 앱을 켤 수도 있고, 종료시켰다가 다시 돌아오기도 하거나앱을 세로에서 가로 모드로 바꾸는 등 여러가지 일들이 발생할 수 있다.이러한 상태변경이 생겼을 때 이 상태들이 가지고 있는 정보들을 유지하고 복원할 수 있어야한다 이러한 작업을 생명주기에 맞추어 작성..
-
[Kotlin] 지연초기화(lateinit, by lazy), 위임(by)Kotlin 2024. 12. 20. 08:00
객체에 프로퍼티를 선언하면 초기화를 해주어야한다근데 객체에 들어오는 정보가 나중에 오는 경우 지금 당장 초기화하기 어려울 수 있다이런 경우 지연 초기화를 사용해 초기화를 지연시킨다지연초기화를 할 때 latenit, by lazy라는 키워드를 사용해서 지연시킬 수 있다이러한 키워드들을 사용해서 컴파일러한테 나중에 초기화를 하겠다고 알려주는 것이다각각의 키워드들에 대해서는 아래에 정리하겠다! 1. lateinit var로 선언한 프로퍼티에서 사용이 가능하고, 해당 프로퍼티에 getter, setter를 사용할 수 없다class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override..
-
[Kotlin] Custom Getter, SetterKotlin 2024. 12. 19. 08:08
단순히 클래스 내의 프로퍼티에 접근해서 해당 프로퍼티의 값을 가져오거나 변경할 때는 게터와 세터를 굳이 쓸 필요가 없다왜냐면 코틀린은 알아서 getter, setter를 만들어주기 때문이다하지만 해당 프로퍼티를 가져올 때 값을 가공하거나 혹은 다른 프로퍼티와 연관되어 연산값 등을 가져오고 싶을 때는 커스텀 게터세터가 필요하다말은 거창하지만 원하는 대로 getter와 setter를 지정해줄 수 있다는 것이다 사용법은 간단하다프로퍼티를 선언하고 그 밑에 getter와 setter를 정의해주면 된다참고로 val로 선언된 프로퍼티의 경우 재할당이 안 되기 때문에 getter만 가능하다class Person(_name: String, _age: Int) { private var name: String = _..
-
[Kotlin] Scope functions(let, also, apply, with, run, use)Kotlin 2024. 12. 3. 23:29
코틀린 scope functions를 사용하면 좀 더 간단하게 코드를 작성할 수 있다헷갈리는 것들이 있어 정리해보려고 한다 1. letlet을 호출하는 객체 T를 매개변수로 받아서 block으로 넘기고 block안의 결과값(value)을 리턴함사실 이렇게 말하면 어렵고 코드로 보면 쉽다 package org.examplefun main() { checkName("hans") checkNameLet(null)}fun checkName(name: String?) { when(name) { null -> println("이름을 다시 입력해주세요") else -> println("name is $name") }}fun checkNameLet(name: String..
-
[kotlin] String.formatKotlin 2024. 11. 7. 08:39
코틀린으로 간단한 콘솔 과제에서 String format을 사용해 콘솔에 문자열을 보여주라는 피드백을 받았다그냥 나는 const val로 콘솔창에 보여줄 글로벌 상수로 정의했는데, String format을 사용해서 좀 더 가독성있게 작성할 수 있는 거 같았다 이걸 사용하기 위해 형식 문자를 알아야 한다 형식 문자란?형식 지정자는 컴퓨터에게 어떤 정보를 어떻게 화면에 보여줄지 알려주는 표시이며 프로그래밍에서 출력 형식을 제어하기 위해 사용된다고 한다. 형식 문자를 사용해서 코드의 결과값을 문자열로 원하는 형태대로 나타낼 수 있다. 코틀린에서는 형식문자를 사용하기 위해 문자열에 format을 사용할 수 있다- %b : boolean- %s : 문자열- %c: 문자- %d : 정수- %f : 실수- %e..
-
[회고] 새싹(SeSac) 한 달 회고etc 2024. 11. 7. 08:19
새싹 취업청년사관학교에서 강의를 들은지도 한 달이 벌써 지났다한 달 동안 어떻게 변했는지 기록을 남겨보고자 한다 1. 새로운 언어에 대한 적응나는 이전에 프론트엔드 부트캠프를 수강했고 자바스크립트(+타입스크립트)가 내 주언어였다부트캠프 중에 일주일 배운 리액트 네이티브가 재밌어서 웹으로 진행한 프로젝트를 앱으로 준비하다가 아예 모바일쪽으로 진로를 바꾸기로 했다그후 새싹에서 코틀린을 배우면서 자바스크립트와는 다른 방법으로 객체지향적으로 코드를 짜는 것을 배웠다 처음에는 클래스 만드는 것도 어렵고 이해가 잘 안 갔다자바스크립트에도 클래스가 있고 어떻게 쓰는지는 알았지만 거의 사용해본 적이 없어서 그런가 ㅎ그래도 계속 과제를 해보면서 클래스간의 관계들이라든지 아키텍처들을 적용해보면서어떻게 흘러가는지 조금씩 ..