일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 1일1커밋
- T자형인재
- 끝말잇기
- 함수형 프로그래밍
- 베드테이블
- 한달어스
- 한단어의힘
- 면접
- 자취필수템
- 베드트레이
- 어떻게 나답게 살 것인가
- 한달독서
- 좌식테이블
- 프래그먼트
- 캐치마인드
- 안드로이드
- 소프시스
- 목적중심리더십
- 브런치작가되기
- 지지않는다는말
- 리얼하다
- 슬기로운 온라인 게임
- 북한살둘레길
- 소프시스 밤부 좌식 엑슬 테이블
- 테트리스
- 인터뷰
- 재택근무
- 한달브런치북만들기
- 목적 중심 리더십
- 아비투스
- Today
- 139
- Total
- 874,662
목록안드로이드 (162)
정상에서 IT를 외치다

AndroidStudio 혹은 IntelliJ 사용시 파일을 잘못 생성 후 재 생성했을 때 타입 인식이 안되는 경우가 있다. 이경우 Preferences 에서 Auto-detect file type by content 에 생성된 파일을 제거하면 된다. 필자의 경우 NoticeModule을 txt 파일로 잘못 만들어 .kt로 확장자를 했지만 IDE에서 인식을 못해 해결법을 찾는 중 아래 방법을 찾았다. 개발하다 보면 간혹 벌어지는 일이니 메모 :)

안녕하세요. 블랙진입니다. 우리는 종종 다음과 같은 요구사항을 받을 때가 있습니다. 텍스트가 늘어남에 따라 오른쪽에 붙어있는 아이콘이 화면을 넘어가지 않고 고정되기를 말이죠. 하지만 현실에서는 어떨까요? 겪어본 개발자는 알 겁니다. 텍스트가 늘어나면서 아이콘이 화면을 벗어나 버립니다. 우리가 원하는 위치에서 아이콘은 고정되고 텍스트만 계속 늘어나면 얼마나 좋을까요? LinearLayout, RelativeLayout 으로 해봐도 안되고 ConstrainLayout은 왠지 될듯 말듯 하면서도 안됩니다. 하지만! ConstrainLayout 을 사용해서 우리는 해결할 수 있습니다! 텍스트가 늘어남에 따라 아이콘이 마지막에 편안하게 안착하는 모습을 확인할 수 있습니다. Yeah~! 🎉🎉 그럼 어떻게 구현하는지..

SavedStateHandle 사용에 대한 단순 기록 용 포스팅입니다. 확인할 내용? SavedStateHandle은 Activity와 Fragment에서 어떻게 실제로 동작되는가? 에제 ViewModel CountSavedStateViewModel class CountSavedStateViewModel( private val handle: SavedStateHandle ) : ViewModel() { companion object { private const val COUNTER = "counter" } private var count1 = 0 private val count2 get() = handle.get(COUNTER) ?: 0 //private val countLiveData = handle...

안녕하세요. 블랙진입니다. 이전 시간에는 안드로이드에서 제공해주는 기본 기능을 사용해 ViewModel을 초기화 하는 방법을 살펴보았습니다. 이번 시간에는 DI 라이브러리인 Koin과 Hilt을 사용한 뷰모델 초기화 방법에 대해 정리해 보겠습니다. 여기서는 각 라이브러리의 기본 사용법은 제외하고 오직 ViewModel을 초기화하는 방법에 대해서만 정리했습니다. 정리 순서는 다음과 같습니다. 1. 생성자에 파라미터가 없는 경우 2. 생성자에 파라미터가 있는 경우 3. SavedStateHandle을 사용하는 경우 🚀 SavedStateHandle에 대한 자세한 설명은 Pluu Dev님의 블로그를 참고해주세요. 여기서는 생략하겠습니다. Koin 0. 모듈 생성 val appModule = module { v..

안녕하세요. 블랙진입니다. 이전 포스팅에서는 ViewModel이 무엇인지 그리고 왜 사용하는지에 대해 정리했습니다. 아직 AAC의 ViewModel이 무엇인지 모르신 분은 이전 포스팅 AAC의 ViewModel 사용 방법 정리을 참고해주세요. 이번 시간에는 두 포스팅으로 나눠 진행하겠습니다. 첫 번째는 안드로이드에서 제공하는 기본 기능만을 사용한 ViewModel 초기화 방법과 SavedStateHandle 사용법을 정리하겠습니다. 두 번째 포스팅은 대표적인 DI 라이브러리인 Koin과 Hilt를 사용한 ViewModel 초기화 및 사용 방법을 정리하겠습니다. 먼저 ViewModel 을 초기화 하는데는 크게 2가지 경우가 있습니다. 1. 생성자에 파라미터가 없는 경우 2. 생성자에 파라미터가 있는 경우 ..

안녕하세요. 블랙진입니다. 구글 문서를 보며 AlertDialog 사용법에 대해 정리해볼러고 합니다. 먼저 AlertDialog가 무엇인지 살펴봐야 겠죠? 다이얼로그란? 다이얼로그는 화면에 보여지는 작은 윈도우 입니다. 화면을 채우지 않고 사용자에게 어떤 정보를 전달하거나 추가적인 정보를 입력받을 수 있습니다. 안드로이드 에서는 Dialog Class 가 있지만 이는 Base Class이므로 직접 사용하기 보다는 Sub Class인 AlertDialog 사용을 권장합니다. (Dialog class의 Sub Class로는 DatePickerDiaog, TimePickerDialog 등이 있습니다.) 그럼 다이얼로그 생성에 관해 이미지와 코드 위주로 설명하겠습니다. 1. 제목과 설명 넣기 AlertDialo..

1. add() supportFragmentManager .beginTransaction() .add(R.id.fl_container, ExampleFragment.newInstance()) .commit() 프래그먼트를 중첩해서 화면에 보여줍니다. 뒤로가기 클릭 시(사용자의 완전한 활동 닫기) 단순 add 함수만으로는 스택에 쌓이지 않으므로 뒤로가기 시 부모 엑티비티가 제거되면서 모든 프래그먼트들이 onDestory 됩니다. 2. add() + addToBackStack() supportFragmentManager .beginTransaction() .add(R.id.fl_container, ExampleFragment.newInstance()) .addToBackStack(null) .commit()..

안녕하세요. 블랙진입니다. 구글에서는 안드로이드 개발을 하는데 ViewModel과 Repository 사용을 추천하고 있습니다. 이는 공식 문서 Guide to app architecture에 나와있는데요. 이번 포스팅은 AAC의 ViewModel이 왜 나왔는지 설명하며 앱에서 사용하는 다양한 ViewModel 초기화 방법들을 한번에 정리해보고자 합니다. 워낙 초기화 하는 방법이 다양해서 한번 정리해 보고 싶었습니다. Activiy와 Fragment는 복잡한 라이프 사이클을 가지고 있습니다. 많은 개발자들은 라이프 사이클에 맞춰 작업하는데 많은 고통을 겪고 있었고 이에 구글에서는 안드로이드 개발을 좀더 손쉽게 도와주는 라이브러리의 모음인 Jetpack을 2018년에 발표했습니다. Android Archi..
안녕하세요. 블랙진입니다. 지난 포스팅에 이어 스낵바를 커스텀 마이징 하는 법을 확인해보겠습니다. Custom Dialog Fragment 만들기 Custom Toast 만들기 Custom SnackBar 만들기 (현재) 스낵바 토스트와 마찬가지로 화면에 자동으로 보였다가 사라지는 팝업입니다. 하지만 윈도우의 최상단이 아닌 부모 뷰에 보여지기 때문에 화면 전환이 이뤄지면 사라지게 됩니다. 토스트 보다 다양한 기능을 사용할 수 있는데요. 사용법은 아래와 같습니다. Snackbar.make(container, "Welcome to blackjin Tistory", 3000) make 함수를 살펴보겠습니다.public static Snackbar make( @NonNull View view, @NonNull ..
안녕하세요. 블랙진입니다. 지난 포스팅에 이에 토스트를 커스텀 마이징 하는 법을 확인해보겠습니다. Custom Dialog Fragment 만들기 Custom Toast 만들기 (현재)Custom SnackBar 만들기 토스트 화면 최상단에 자동으로 보였다가 사라지는 팝업을 사용자에게 보여줍니다. val context = this Toast.makeText(context, "Welcome to blackjin Tistory", Toast.LENGTH_SHORT).show() 사용법은 간답합니다. 여기에 더불어 gravity 속성을 더해 위치를 변경해 줄 수 있습니다. Gravity 속성 살펴보기 속성을 하단 왼쪽으로 정해보았습니다.val toast = Toast.makeText(context, "Welc..