Develop/android9 textWatcher interface editText에서 사용하는 리스너인 textWatcher 입니다. 변경될 수 있는 객체를 사용하면 textWatcher의 메소드가 변경하는 동작에 해당되는 객체를 호출해줍니다. (3가지의 동작을 하나만 골라 사용하는 것이 아니고 모두 사용해야합니다.) beforeTextChanged // text 입력 전 동작 onTextChanged // text 변경시 동작 afterTextChanged // text 입력이 종료된 후 동작 3개의 메소드는 거의 동시에 동작하기 때문에 로그를 찍어 확인하는 방법이 유용합니다. textWatcher에 여러개의 editText를 사용할 경우 무한루프가 발생되기 때문에 removeTextChanged 를 사용하여 제거하거나 afterChanged에서 null체크를 해줍니.. 2021. 8. 22. layout setVisibility layout setVisibility를 사용하면 레이아웃, 버튼, 텍스트뷰 등 제어가능한 부분을 숨기거나 보여주는 조건입니다. ex) layout.setVisibility(View.VISIBLE) // 뷰를 보여준다. layout.setVisibility(View.INVISIBLE) // 뷰를 숨겨준다.(view가 존재했던 공간이 계속해서 존재한다.) layout.setVisibility(View.GONE) // 뷰를 숨겨준다. (view가 존재했던 공간도 사라지게 한다.) INVISIBLE은 사용자에게 view가 없는 것처럼 눈속임을 하는 느낌이라면, (숨긴공간에 클릭 이벤트가 있을경우 클릭이 됩니다.) GONE은 view를 없앤것과 같은 효과를 볼 수 있습니다. 2021. 8. 22. viewBinding (뷰 바인딩) android studio 안에서 XML의 view에 접근하기 위해서 findViewByld를 사용했었습니다. 하지만 android studio 3.6부터 Gradle Plugin에 포함되면서 추가 플러그인 없이 viewBinding이 정식지원됩니다. (android studio 4.0부터 BuildFeatures로 이동되었습니다.) findViewByld에서 viewBinding으로 사용을 대체하면서 코드가 클린해지고, 속도와 오류(null)에 대한 안정성을 확보할 수 있습니다. ex)private var viewBinding: classname? = null // 초기화 viewBinding!!.TextViewid.text = "" // .xml에서 textview를 가져와 사용 2021. 8. 22. 코루틴 (coroutine) Import kotlinx.coroutines.* Scope : 제어범위 및 실행범위 지정 Globalscope : 프로그램 어디서나 제어 동작이 가능한 기본범위 Coroutinescope : 특정한 목적의 dispatcher 를 지정하여 제어 및 동작이 가능한 범위 Dispatchers.default 기본적인 백그라운드 동작, cpu의 사용량이 많은 작업에서 사용하기 적합 Dispatchers.io 네트워크, 디스크에 최적화 된 동작, 작업을 멈추는 것에 최적화 dispatchers.main UI구성스레드에서 동작 *모든플랫폼에서 지원이 되지는 않는다. CoroutineScope의 확장함수 Launch와 Async Launch 반환값이 없는 job 객체 Async 반환값이 있는 deffered 객체 반.. 2021. 8. 3. 이전 1 2 3 다음