https://www.youtube.com/watch?v=DAmMN7m3wLU data binding을 적용하려고 하는데 제대로 알고 적용하고 싶어서 구글링하는 중에 Google I/O 영상을 찾았다. 40분 가량의 영상이고 ... 나를 위해 정리해본다 ! Data Binding 은 layout 으로부터 data를 호출하지 않게 해준다. layout의 data를 호출하기 위해 매번 findViewById 를 이용하는 짓(? 영상에서는 이 짓이 suck이라고 표현함...ㅎㅎ)을 하지 않아도 된다. 그렇기 때문에 관심사 분리를 위한 MVVM 패턴 등의 적용된 앱에서 data binding을 사용하면 명확하게 관심사 분리가 가능해진다. > 컴파일 과정에서의 Data Binding 처리 과정 - Process ..
Fragment를 Dialog 로 사용하기로 했다. 그런데 ... 사이즈가 맘에 안든다... 높이는 WRAP_CONTENT로 한다고 해도... 너비는 ...WRAP_CONTENT는 너무 작은 것 같고 MATCH_PARENT는 너무 넓다고 생각할 때 !!! 변경해보자 ! 1. WRAP_CONTENT, MATCH_PARENT로 크기 설정하는 방법 - WindowManager의 LayoutParams 에서 WRAP_CONTENT / MATCH_PARENT 를 가져온다. - Dialog의 Window에 Attributes 에 param 을 설정 한다. - Window 창 중앙에 위치하고 싶다면 Gravity 를 CENTER 로 설정한다. 2. 디바이스의 디스플레이 비율에 따라 크기를 비율로 설정하는 방법 - W..
Fragment를 다이얼로그처럼 만들기로 했다. 그리고 모서리를 둥글게 적용하기 위해서 레이아웃의 background 에 corner를 작성한 drawable 파일을 넣었는데... 직각이 그대로 표출 @.@!!! 그래서 찾아보니... 레이아웃에 대한 작업 + Fragment 내에서 inflate할 때, 추가 작업을 해야 한단다... 해보자!! Fragment 파일 내에 위와 같이 setBackgroundDrawable의 ColorDrawable을 TRANSPARENT 로 투명하게 설정해주면 모서리가 나타나지 않는다. * 참고로 안드로이드 버전이 4 이하일 경우, Blue Line이 나타난다는데... 그럴경우는 아래 stackoverflow를 참고하자. https://stackoverflow.com/que..
https://developer.android.com/studio/intro/update?hl=ko IDE 및 SDK 도구 업데이트 | Android 개발자 | Android Developers Android 스튜디오를 설치하면 자동 업데이트 및 Android SDK Manager를 사용하여 Android 스튜디오 IDE 및 Android SDK 도구를 쉽게 최신 버전으로 유지할 수 있습니다. developer.android.com
목표 - 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..