전체 글
-
[CameraX] resolution(해상도) 조절 및 fallback 설정Android 2025. 8. 5. 08:31
이미지를 외부 저장소에 저장할 때 너무 큰 사이즈로 저장이 되었다사이즈와 해상도가 크다보니 파일 크기도 높아졌다CameraX에서는 이런 해상도를 조절할 수 있는 기능이 있어서 적용해보았다 @Params boundSizeboundSize를 기준으로 최고의 해상도를 선택 -> 없으면 fallbackRule에 정한 해상도 룰을 따름 @Params fallbackRule boundSize에서 정한 사이즈에 맞는 해상도를 기기에서 지원하지 않을 때 설정해놓은 fallbackRule 적용함cameraX에서는 최적화된 fallbackRule 옵션을 지원함 나의 경우 boudnSize를 어떻게 할까 하다가 아래와 같은 글을 보게 되었다https://www.adobe.com/kr/creativecloud/video/..
-
[회고] 4학년 1학기 과목별 회고방통대 2025. 7. 3. 18:00
어느덧 4학년 1학기 성적이 나왔다사실 1학기는 정처기에 맞춰서 과목을 신청했는데 이사 날과 겹쳐 시험을 결국 보지 못했다 하지만 꼭 시험을 위한 게 아니어도 어느정도 기본으로 알고가야 하는 지식들이고 따로 더 공부가 필요한 과목들이라고 생각한다3학년 2학기는 회고를 올리지 않았는데 이유는 부트캠프와 같이 진행했기 때문에 제대로 된 공부를 못해서 회고를 할 수 없었기 때문이다 1. 알고리즘강의를 들을 때는 이해한다고 생각했는데 막상 문제를 보니까 너무 헷갈렸다...처음에는 나름 괜찮았는데 점점 뒤로 갈수록 너무 어려운 알고리즘 이론들이 너무 많았다그리고 비슷한데 이름만 다른 이론들이라거나 이런 것들이 나를 헷갈리게 만드는 요인들이었다다른 학우들의 말을 들어보니 시험이 어렵다고 소문이 자자한 과목이었다 ..
-
[Compose] LazyVerticalGrid 버벅거림 현상 해결해보기Android 2025. 4. 25. 18:12
테스트 기기 : 갤럭시 s8(Android 9) tab layout과 compose의 LazyVerticalGrid를 사용해 ui를 만들었다.포스팅의 이미지가 여러 개 보이는데, 문제는 다음과 같았다 1. 이미지 로드 속도가 느리다2. 스크롤을 할 때 버벅거리는 현상이 발생한다 이미지의 경우 coil을 사용해 불러오고 있었고스크롤을 할 때 버벅거림이 생기는 것은 불러올 포스팅의 갯수가 많아지면 점점 더 심해졌다사용자들이 만약 이 앱을 사용한다면 버벅여서 불편함을 겪었을 것이다(나같으면 신고했음) 처음에는 이러한 문제들 때문에 이미지를 업로드할 때 bitmap.compress를 사용해서 이미지 파일의 크기를 70% 수준으로 압축해서 줄였으나 소용이 없었다^^...왜냐하면 이미지 해상도(resolution)..
-
[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..