본문 바로가기

개발/안드로이드271

Android Action Mode 출처: https://deque.tistory.com/125?category=984011 [코딩하는 사람] 안드로이드에서 Text를 Select했을 때 나오는 메뉴에 뭔가 추가하고 싶을 수도 있다. 예를 들면, 이런식으로, Important를 꾹~ 눌려서 (Long press) Text를 Select한 뒤에 나오는 메뉴에서 '퀵번역'을 추가 하고 싶을 수 있다. 이런걸 구현하려고 하면 간단하게 함수 하나만 override하면 된다. @Override public void onActionModeStarted(final android.view.ActionMode mode) { Menu menu = mode.getMenu(); menu.add("퀵번역") .setEnabled(true) .setVisible(.. 2019. 5. 31.
Android View Stub 출처: https://deque.tistory.com/124?category=984011 [코딩하는 사람] View Stub란? 레이아웃을 include 태그처럼 외부의 layout을 들고오는건데, 여타 include 태그와는 다르게 동적으로 필요할 때 inflate 할 수 있는 태그이다. 예를 들면 LinearLayout> 와 같은 main activity layout이 있다고 치자. 그리고 LinearLayout> 와 같이 my_inflate_layout.xml이 있다고 치자. 이렇게 되면, 액티비티에서는 View inflatedView = ((ViewStub) findViewById(R.id.my_stub)).inflate(); TextView text1 = inflateView.findViewBy.. 2019. 5. 31.
안드로이드 Picture In Picture (PIP) 출처: https://deque.tistory.com/123?category=984011 [코딩하는 사람] 깃 헙 주소 : https://github.com/5seunghoon/PipExample PIP기능은 아래와 같다 이렇게 재생되던 동영상을, 홈키같은걸 눌리게 되면 이렇게 작은화면으로 전환되고, 다른 앱 위에서 동영상이 계속 재생될 수 있는 기능이다. 유튜브나 네이버TV등에서 자주 볼 수 있는 기능이다. 이를 간단하게 구현해보자. 먼저 깃헙 주소는 게시글의 최상단에 미리 적어놓았다. 1. 매니패스트의 액티비티 부분을 다음과 같이 수정하자 intent-filter> activity> 보면, android:resizeableActivity과 supportPictureInPicture이 설정되어 있는 것.. 2019. 5. 31.
Android Kotlin MVVM패턴으로 간단한 검색 앱 만들기 - 5. SingleLiveEvent, SnackbarMessage 출처: https://deque.tistory.com/113?category=984011 [코딩하는 사람] S4장에서 계속 사용하던 LiveData의 문제점이 뭘까요? 예를들어 LiveData의 Observing을 이용해서 startActivity()를 한다고 생각해봅시다. 우리는 그럼 뷰모델에선 startActivityLiveData.value = SOME_DATA 와 같이 setValue를 하고, 액티비티에선 viewModel.startActivityLiveData.observe(this, Observe{ startActivity(어쩌구 저쩌구 클래스::class.java) }) 와 같이 실행을 하겠죠. 그렇다면 여기서 문제점이 생깁니다. 만약 startActivityLiveData를 observe하.. 2019. 5. 31.
Android Kotlin MVVM패턴으로 간단한 검색 앱 만들기 - 4. Livedata를 통한 데이터 바인딩 출처: https://deque.tistory.com/112?category=984011 [코딩하는 사람] 이번에는 저번 글에 이어서 Livedata를 이용하여 View 와 ViewModel간의 데이터 바인딩에 대해 글을 써보겠습니다. 저번 글에서도 설명한것처럼, View는 ViewModel 객체를 멤버로 가지고 있지만, ViewModel은 View의 객체를 가지고 있지 않습니다. 그럼, ViewModel에서 View의 함수를 호출하거나 View의 내용을 변경하거나, 혹은 Context나 Activity 객체의 함수를 호출해야 할 때는 어떻게 해야 할까요? 물론 Context를 이용하고 싶으면 AndroidViewModel을 상속하면 되지만, 지금은 넘어가도록 합시다. 해답은 바로 View가 ViewMo.. 2019. 5. 31.
Android Kotlin MVVM패턴으로 간단한 검색 앱 만들기 - 3. RxJava + Retrofit를 통한 네트워킹 및 옵저빙 출처: https://deque.tistory.com/110?category=984011 [코딩하는 사람] 이번 글에서는 Retrofit으로 네트워크 통신을 하고 그 결과값을 RxJava로 받아오는 과정을 수행해보겠습니다. 일단 Retrofit에 대해 간단히 알아보도록 하죠. Retrofit 저도 최근에 알았는데, 레트로핏 한글 문서가 있더라구요. http://devflow.github.io/retrofit-kr/ 길지 않으니 한번 정독하셔도 됩니다. 간단하게 레트로핏을 요약하자면 public interface GitHubService { @GET("/users/{user}/repos") Call listRepos(@Path("user") String user); } 이렇게 인터페이스 형태의 서비스를 먼.. 2019. 5. 31.
Android Kotlin MVVM패턴으로 간단한 검색 앱 만들기 - 2. Koin을 통한 의존성 주입 출처: https://deque.tistory.com/109?category=984011 [코딩하는 사람] 의존성 주입.. Dependency injection ... 줄여서... DI.... 이걸 왜하느냐! 라고 물으시면.. 아주 간단하게, 테스팅을 위해서! 라고 답할 수 있지 않을까요..? 지금과 같은 MVVM패턴에서 뷰모델을 테스팅한다고 칩시다. 그럼 뷰모델을 테스팅하려면 뷰모델이 의존하고 있는 모델은.. 어떻게 만들어서 뷰모델에게 줘야 뷰모델을 테스팅 할 수 있을까요? 간단한 방법으로는 모델을 내부에서 생성하지 않고 생성자의 인자로 주는 것입니다. ViewModel{ val model = Model() } 과 같이 하지 않고 ViewModel(val model){ } 이렇게 그러면 뷰모델을 테스팅.. 2019. 5. 31.
Android Kotlin MVVM패턴으로 간단한 검색 앱 만들기 - 1. BaseView, BaseViewModel을 작성하여 MVVM의 토대 만들기 출처: https://deque.tistory.com/108?category=984011 [코딩하는 사람] MVVM 패턴과 Kotlin으로 간단한 앱을 만드는 것에 대해 글을 써보려고 합니다. 저도 정리를 좀 하고, 다른 분들도 도움이 좀 되셨으면 하는 의미에서.. 일단 어떤 앱을 만들고자 하냐면, 간단하게 카카오 Api로 이미지 검색을 해서 그 내용을 화면에 리사이클러뷰로 그리드하게 쭉 뿌려주는 앱을 샘플로 만들어 볼 예정입니다. 이렇게요! 그 과정에서 MVVM패턴을 위한 Livedata, 통신을 위한 Retrofit + RxJava, 이미지를 뿌려주기 위한 Picasso 의존성주입을 위한 Koin, 그리고 com.android.support를 대채하는 AndroidX 를 활용해 볼 예정입니다. And.. 2019. 5. 31.