일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 아키텍쳐패턴
- threadsafety
- 유스케이스다이어그램
- SoftwareArchitecture
- NetworkCommunication
- SDLC
- LazyInitialization
- decoding
- DistributedSystems
- ArchitecturePatterns
- 이미지찌그러짐
- scaletype
- 구조패턴
- 시퀀스다이어그램
- android
- ImageView
- 전역상태관리
- 싱글톤패턴
- ClientServerArchitecture
- SystemDesign
- Kotlin
- LayeredArchitecture
- 행위패턴
- RxJava
- 이미지짤림
- 옵서버
- 클래스다이어그램
- stateflow
- MVVM
- SharedFlow
- Today
- Total
목록android (17)
Kyung_Development
안드로이드에서 다이얼로그를 띄우는 방법은 여러 가지가 있지만, DialogFragment는 가장 유연하고 강력한 옵션 중 하나입니다. 이번 포스팅에서는 Fragment, DialogFragment, BottomSheetDialogFragment의 차이점과 DialogFragment를 사용하는 이유를 정리해보겠습니다.1. Fragment, DialogFragment, BottomSheetDialogFragment의 차이점1) Fragment역할: 액티비티 내에서 UI를 재사용할 수 있도록 돕는 독립적인 UI 컴포넌트특징:여러 개의 프래그먼트를 하나의 액티비티에서 활용 가능ViewPager 또는 Navigation Component에서 활용됨Activity의 생명주기에 종속됨사용 예시:class MyFrag..
소프트웨어 개발을 공부하거나 설계할 때, 전체 구조를 이해하는 것이 쉽지 않을 때가 있습니다. 특히, 각 구성 요소들이 어떻게 연결되고 역할을 수행하는지를 파악하는 것이 중요하죠. 이를 생물학의 계층 구조와 비교하면 훨씬 직관적으로 이해할 수 있습니다.생물학에서는 세포(Cell)부터 시작해 조직(Tissue), 기관(Organ), 기관계(Organ System), 그리고 완성된 개체(Organism)까지 단계적으로 구성됩니다. 마찬가지로 소프트웨어 개발에서도 가장 작은 코드 단위부터 완성된 앱까지 계층이 존재합니다. 이를 비교하며 정리해보겠습니다.1. 세포 (Cell) → 클래스(Class), 함수(Function), 변수(Variable)세포는 생물체를 구성하는 가장 기본적인 단위입니다. 마찬가지로, ..
안드로이드 앱을 개발할 때, 특정 데이터를 저장하고 불러오는 기능이 필요할 때가 많다. 특히 같은 데이터를 여러 번 추가하면 그 개수를 누적하는 방식으로 관리하고 싶을 때가 있다. 예를 들어, 특정 이벤트(A, B, C 등)가 몇 번 발생했는지 기록하고 싶을 때 SharedPreferences를 활용하면 간단하게 해결할 수 있다.이번 글에서는 기존 데이터가 덮어씌워지는 문제가 발생하지 않도록 하고, 각 항목이 몇 번 저장되었는지 카운트하는 방법을 정리해본다.1. 기존 SharedPreferences 문제점보통 SharedPreferences에 리스트를 저장하는 방법은 다음과 같다.fun setList(context: Context, key: String, values: ArrayList) { val..
import androidx.lifecycle.Observerimport androidx.work.WorkInfoimport androidx.work.WorkManagerfun checkWorkStatus(context: Context, uniqueWorkName: String) { val workManager = WorkManager.getInstance(context) // 고유한 작업 이름으로 상태 확인 workManager.getWorkInfosForUniqueWorkLiveData(uniqueWorkName).observeForever { workInfos -> if (workInfos.isNullOrEmpty()) { println("해당 이름의..
Firebase 이벤트 이름 규칙Firebase 이벤트 이름은 다음과 같은 규칙을 따라야 합니다:소문자만 사용 가능이벤트 이름은 소문자로 작성되어야 합니다.예: event_name띄어쓰기 불가이벤트 이름에 공백이 포함되면 Firebase에서 무시될 수 있습니다.대신 _(언더스코어)를 사용하세요.잘못된 예: event name올바른 예: event_name최대 40자 제한이벤트 이름은 40자를 초과할 수 없습니다.알파벳, 숫자, 언더스코어(_)만 허용특수 문자(예: !, @, #, -, 공백 등)는 사용할 수 없습니다. 매개변수 종류static final StringADD_PAYMENT_INFO = "add_payment_info"결제 정보 이벤트 추가static final StringADD_SHIPP..
Kotlin에서 문자열을 처리하는 다양한 방법과 관련 메서드/기능을 아래에 정리했습니다. 각 방법별로 예시도 함께 제공합니다.1. 문자열 선언Raw String (다중 라인 지원)Escaped String// Escaped Stringval singleLine = "Hello, Kotlin!\nWelcome to string handling."// Raw Stringval rawString = """ Hello, Kotlin! This is a raw string example. You can preserve line breaks.""".trimIndent()2. 문자열 템플릿변수나 표현식을 문자열에 직접 삽입 가능.val name = "Kotlin"val version = 1.8val ..
ImageView 에 이미지를 설정하다보면 간혹 짤리거나 찌그러지는 경우가 있는데scaleType을 설정해두면 해결되는 심플한 문제입니다. scaleType center이미지 원본 크기 유지, 중앙 배치.centerCrop이미지 중앙 기준, 뷰를 채우며 잘림 발생.centerInside이미지가 뷰 내부에 맞게 축소/중앙 배치, 넘치면 축소.fitCenter뷰 내부에 맞게 축소/확대, 중앙 정렬.fitStart뷰 내부에 맞게 축소/확대, 상단 정렬.fitEnd뷰 내부에 맞게 축소/확대, 하단 정렬.fitXY뷰 크기에 강제로 맞춤, 비율 무시.matrix직접 변환 설정 필요 (커스텀). 예제
1. List의 종류Kotlin에서는 리스트를 크게 불변 리스트와 가변 리스트로 나눌 수 있습니다.(1) 불변 리스트 (List)특징: 수정이 불가능한 리스트입니다.리스트에 데이터를 추가하거나 제거할 수 없습니다.메서드:listOf(): 불변 리스트를 생성합니다.emptyList(): 빈 리스트를 생성합니다.예시kotlin코드 복사val immutableList: List = listOf("A", "B", "C") // immutableList.add("D") // 불가능!(2) 가변 리스트 (MutableList)특징: 수정이 가능한 리스트입니다.요소 추가, 삭제, 수정이 가능합니다.메서드:mutableListOf(): 가변 리스트를 생성합니다.ArrayList(): Java의 ArrayList를 기반..
standard: 기본 launchMode입니다. 새로운 인스턴스가 항상 생성되며, 백스택에 쌓입니다. 각각의 인텐트에 대해 새로운 액티비티 인스턴스가 생성됩니다 android:name=".MainActivity" android:launchMode="standard" 이 예제에서는 MainActivity가 standard launchMode로 설정되어 있습니다. 따라서 앱에서 MainActivity를 여러 번 시작하면 새로운 인스턴스가 생성됩니다. MainActivity - > startActivity -> SubActivity로 이동 -> 앱 종료하지 않고 다시 실행 -> SubActivity 노출됨 singleTop: 액티비티 인스턴스가 백스택의 맨 위에 있으면, 해당 인스턴스를 사용하여 인텐트를 처..

layout\activity_main.xml MainActivity.java package kr.co.jk.http_img_url; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.os.Bundle; import android.widget.ImageView; import com.bumptech.glide.Glide; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)..