
목표 - EditText 영역 선택 시, EidtText 기능을 수행한다. - 사용자가 EditText 외의 영역을 선택 시, EditText에 입력된 글자가 TextView로 변경된다. - 사용자가 EditText 외의 영역을 선택 시, EditText로 인해 표출된 가상 키보드는 내린다. 구현방법 1. xml 정의 - EditText 정의 - TextView 정의 - root layout 에 id 정의 2. java 파일에 위의 구성요소 등록 3. java 파일에 각 요소 선택 시, 진행되어야 할 로직 정의 - EditText / TextView 선택 시, EditText 보이기 (TextView에 입력되어 있던 글자를 포함) + TextView 숨기기 - 다른 영역 선택 시, EidtText 숨기기..

fragment를 이용하여 Dialog를 만들었다. 우선 xml 을 생성하고, 해당 xml에 layout_height와 layout_width를 정의하면서, wrap_content(height), match_parent(width) 로 설정하였다. 그리고 activity에 fragment를 연결해주었다. 그 다음은 fragment 에서 LayoutInflater를 통해 container(부모뷰)에 등록해주었다. 그러나... fragment의 크기가 xml에 설정된 사이즈대로 생성되지 않은 것!!!!!! (width가 match_parent로 설정되지 않음.) 그래서 열심히 구글링 !!! 찾은 방법은 아래와 같다. 나는 fragment를 dialog 처럼 사용할 것이므로, 기본 AlertDialog의 wi..
Room의 TypeConverter를 사용하게 된 이유 : Android의 MaterialDesign의 ToggleGroup을 이용하니, 선택된 item들은 List 형태를 가졌다. 선택된 item들을 저장해야 하는데 Room은 list 저장을 지원하지 않으므로, TypeConverter를 이용하여 저장하기로 하였다. ( 선택된 item들을 Room에 저장하기 전에 타입을 변경하고 저장해도 되지만, Room을 잘 사용하고 싶고, 관심사 분리를 위해 MVVM 패턴을 적용하였는데 이 패턴에 걸맞게 구현하고 싶어서 TypeConverter를 이용하기로 했다. ) TypeConverter 적용 방법 1. Room에 저장될 데이터 타입과 객체 타입을 서로 변환하는 메소드를 포함하는 TypeConverters 클래..

* 목표 : YouTube의 title을 가져와서 화면에 표출 * 방법 : 결과 값으로 title 을 받아올 것이므로, RxJava의 Single을 이용한다. * 요구사항 - title을 받는 동안 progressbar를 띄운다. - 최대 5초 동안 받을 수 있도록 한다. - 결과 값을 title 에 표출 한다. - loading 일 동안, 화면과 상호작용을 불허한다. * ViewModel, LiveData, RxJava의 Single 객체 1. ViewModel 을 정의한다. (여기서는 일반 ViewModel이 아닌 AndroidViewModel을 상속받는다. - 원래 ViewModel에는 Context 정보를 포함하면 안되지만, Room을 이용하기 때문에 Application 정보가 필요하므로 App..
RxJava의 Single 객체를 찾아보게 된 이유는 AsyncTask를 이용해서 네트워크 통신을 해야하는데 AsyncTask는 deprecated된다고 하니 대안으로 RxJava, coroutine을 사용해야 한다고 한다. 그렇기 때문에 둘다 확인을 해볼 예정이었는데, 특히 Single은 내가 구현하고자 하는 리턴 값 하나와 에러처리에 최적화 되어 있으므로, Single에 대해서 우선 공부해보려고 한다. 일단 Single 객체를 사용하기 위한 사전정보를 간략하게 적어봤다 (차차 RxJava를 공부하면서 업댓할 예정) - Observable ReactiveX에서 observer는 Observable에 의해서 subscription 한다. 그러면 observer는 Observable에 의해서 배출되는 연속..
이에 대한 글을 쓰게 된 이유... Activity간의 객체를 전달하는데 사용되는 기술이 Serializable과 Parcelable이 있고, 웹개발할 때 사용했던 Serializable을 사용했었다. Parcelable은 안드로이드 앱 개발 중에 처음 들어봤고, 처음 접했으니 Serializable보다 어렵게 느껴졌기 때문에 계속해서 Serializable을 사용했었다. 그런데... 면접 보면서 Parcelable의 사용여부를 물어봤었다. 음... 안쓰더라도 알아야겠다고 생각했고, 오늘 앱 고도화를 진행하면서 제대로 확인하고 더 좋은 것을 사용해보자! 라는 생각에 Serialiable과 Parcelable의 특징을 찾아보기로 했다. 이 내용은 이 둘의 특징에 대한 것이다. Serialization(직렬..

ViewModel : UI components 위한 데이터를 제공하고 변경된 configuration 에 대해서 데이터가 유지되도록 하는 객체 즉, Activity Instance가 rotation에 의해서 재생성되면서 UI data는 모두 소멸되게 된다. 이러한 문제를 해결하기 위해 UI 데이터를 Activity에서 관리하는 것이 아니라 ViewModel에서 관리하도록 해야 한다. Activity는 모든 UI 상호작용을 처리하고 데이터를 로딩하고, UI component 들을 그리는 등 많은 작업을 처리해야 한다. 모든 클래스는 각자의 역할이 단일화되어 있어야 한다. "Single Responsibility Principle : Every class should have a single respnsib..
안드로이드 앱을 개발하면서 막상 build.gradle(빌드파일)에 대한 속성에 대해서 dependency를 제외하고는 제대로 알지 못했다. 그래서 면접 질문에 나왔는데 대답을 못했음..... ㄸㄹㄹㄹ... 이참에 !! 정리해보자 !! 참고 - https://jw910911.tistory.com/49 - https://jsdev.kr/t/targetsdkversion-compilesdkversion/4653 - https://developer.android.com/guide/topics/manifest/uses-sdk-element.html - https://medium.com/androiddevelopers/picking-your-compilesdkversion-minsdkversion-targetsd..