Android/Common

Android/Common

[Android] DataBinding 정리

본 포스팅은 꾸준히 수정됩니다~ findViewById(R.id.sample_text).apply { text = viewModel.userName } //또는 sample_text.text = viewModel.userName 전체 프로젝트의 코드 중 UI의 데이터를 변경해주는 코드의 양이 적지 않다. DataBinding을 사용하면 불필요한 UI 변경 코드를 줄이면서 데이터를 변경할수 있고 메모리 누수 방지와 NPE 방지 등 좋은 점들이 많다. 예를 들어, 부모 레이아웃안에서 TextView를 찾아 viewModel의 userName 값을 대입해주는 코드도 DataBinding을 사용하면 xml에서 똑같은 기능을 구현할 수있다. 변경 후 .. activity_main.xml DataBinding 추가..

Android/Common

[Android] 로또 정보 크롤링해보기 by Kotlin

Jsoup Jsoup이란 Html을 가져오고 파싱을 도와주는 자바 라이브러리이다. 자바와 완벽히 호환이 되는 Kotlin으로 Jsoup을 사용해보자 implementation 'org.jsoup:jsoup:1.11.3' 파싱할 정보 이번에 파싱할 정보는 등수 별 당첨 인원이다. 당첨 번호의 목록은 api로 제공되지만 순위 별 당첨번호는 제공하지 않기 때문이다. 파싱할 Html 형식을 보면 가져와야할 데이터들은 - - 계층구조에 존재한다. 위와 같은 예로 A>B>C 계층 구조의 태그를 파싱할 때는 공백으로 구분한다. regex table tbody tr code val url = "https://dhlottery.co.kr/gameResult.do?method=byWin" val doc = Jsoup.co..

Android/Common

[Android] Firebase ML Kit - Translate에 대한 소개

Firbase ML Kit - Translate = 기기별 번역 API [공식 문서] https://firebase.google.com/docs/ml-kit/translation 기기별 번역 API란 인터넷 필요없이 기기에서 실행이 되는 API인것 같다. 대신 번역 모듈을 (언어당 30MB) 다운받아야 하는 제한사항이 있고 여러나라 언어를 번역을 하는 경우 다운 받아야 하는 모듈의 용량을 클라이언트 기기가 다 짊어지게 되어있다. 그래서 인지 Firbase에서도 불필요한 모듈은 삭제하는 것이 좋다고 명시되어 있다. 총 59개의 언어를 지원하고 기기별 번역 API라서 번역하고자 하는 Text를 서버에 보내면서 번역 Text를 받아오는 다른 플랫폼의 번역 API와는 다르게 빠른 결과를 받아오는 현상을 기대할 ..

Android/Common

[Android]SharedPreferences by Kotlin

SharedPreferences Sqlite 처럼 대규모 혹은 여러개의 데이터를 저장할때가 아닌, 하나의 정보 들을 작게 저장하고 싶을 때 사용하는 클래스입니다. import android.content.Context import android.content.SharedPreferences class SharedPreferences(context: Context) { val PREFS_FILENAME = "appName.prefs" val SOUND = "Sound" val VIBRATION = "Vibration" val prefs: SharedPreferences = context.getSharedPreferences(PREFS_FILENAME, 0) var sound: Boolean get () =..

Android/Common

[Android] 음성 인식 기능 추가하는 방법 정리

1. 'Okay. Google' 기능으로 앱 실행시키기 이 기능은 별다른 추가 없이 실행시키고자 하는 앱의 이름을 넣어서 부르면 된다. ex) 만약 앱 이름이 '점냥'이라면 "Okay Google 점냥 시작" 2. SpeechRecognizer 의 단순 인식 이 기능은 기기 내부 음성 인식 API를 이용하여 음성을 읽어 오는 클래스이다. 때문에 특정 기기에 음성 인식 API가 없다면 사용할 수 없다. 퍼미션 추가 * 안드로이드 마시멜로 이상부터 권한 허가를 요청하는 부분이 필요하다. RecognitionListener 생성 음성인식 API 호출시 발생하는 콜백 메소드 정의 RecognitionListener listener = new RecognitionListener() { @Override publi..

Android/Common

[Android] AAC - View Binding

들어가기 전 Kotlin 1.4.20 Release에서 변경점이 생겼습니다. kotlin extensions plugin이 deprecated 된 점입니다. kotlin extensions plugin에는 synthetic views라는 뷰에 대해 접근하는 코드를 생략해주던 기능이 포함 되어 있었습니다. //Activity or Fragment name.text = "test" 그런데 새로운 버전에서는 dprecated 되었으니 계속 해당 기능을 이용할 수는 없습니다. 다른 대안이 있을까요? ViewBinding란? Android AAC 중 하나로 view의 접근하는 코드를 조금 더 쉽게 작성할 수 있게 도와주는 기능입니다. ex) findViewByID 대신 사용 할 수 있다. Gradle 설정 etc..

Android/Common

[Android] 면접에서 헷갈릴수 있는 Activity Lifecycle

위 Activity의 Lifecycle 그림은 대부분 알고 있으실 건데요. 하지만 두 Activity 간의 전환 사이에서 발생하는 Lifecycle 순서는 대부분 모르실겁니다. (어떤 면접관분께서는 실제 면접에서 질문했을 때 지금까지 맞춘 사람을 2명 보았다고 하네요.) 한번 맞춰보실까요?? Q1. 현재 A 엑티비티가 포그라운드 상태입니다. 이때 B 액티비티로 전환될 때, 발생하는 LifeCycle 콜백 함수들을 순서대로 나열해보세요. A:onPause() A:onStop() B:onCreate() B:onStart() B:onResume() 위 순서로 푸셨다면 아쉽지만 정답자에 들어가지 못하셨습니다 ㅠ 정답 A:onPause() B:onCreate() B:onStart() B:onResume() A:o..

Android/Common

[Android]Keybard Show/Hide 감지하기

activity root View에 대해 리스너를 겁니다. rootView.viewTreeObserver.addOnGlobalLayoutListener { val rec = Rect() rootView.getWindowVisibleDisplayFrame(rec) //finding screen height val screenHeight = rootView.rootView.height //finding keyboard height val keypadHeight = screenHeight - rec.bottom keymode = if (keypadHeight > screenHeight * 0.15) { Toast.makeText(this@MemoActivity, "VISIBLE KEYBOARD", Toast...

Android/Common

[Android] RecyclerView의 최상단 최하단 감지하기

안녕하세요 점냥입니다:) 페이징을 구현하려고 할 때, Jetpack Paging 라이브러리를 쓰지 않는 다면 우리는 리스트의 끝을 도달하는 시점을 확인해야 합니다. recyclerview에서는 함수로 쉽게 제공해주고 있습니다! canScrollVertically(int direction) // 수직 상단 하단 감지 canScrollHorizontally(int direction) //수평 상단 하단 감지 수직 기준 direction 값이 1이면 하단 방향 , -1이면 상단 방향 수평 기준 direction 값이 1이면 오른쪽 방향 , -1이면 왼쪽 방향 위 조건을 사용하여 아래처럼 구현할 수 있습니다. myList.setOnScrollListener(new RecyclerView.OnScrollListe..

Android/Common

[Android] Retrofit 기본 사용법

안녕하세요. 점냥입니다:) 이번 포스팅에서는 Android HTTP 통신 라이브러리인 Retrofit의 기본 사용 방법에 대해서 정리하고자 합니다. Retrofit 퀄리티가 있는 앱을 개발하려면 네트워크 통신은 빠질 수가 없는 기능입니다. 여러분은 어떤 방식으로 네트워크 통신을 구현하시나요? Java에서 기본적으로 제공해주는 HttpURLConnection을 사용하시나요? Google에서 개발한 Volley 라이브러리를 사용하시나요? 저는 Retrofit을 사용하는 것을 추천드립니다. Retrofit이 속도 측면에서 여러 다른 네트워크 라이브러리와 비교했을 때 가장 빠르고 효율적이다라는 자료를 쉽게 찾아보실 수 있습니다. 라이브러리를 사용하는 개발자 입장에서 네트워크 호출 시 처리해주어야 하는 보일러 플..

점냥
'Android/Common' 카테고리의 글 목록 (5 Page)