본문 바로가기

전체 글

(34)
lateinit 과 by lazy 분석 lateinit 과 by lazy 모두 지연 초기화를 위해 사용되는 것으로만 알고 있었고, lateinit 은 var 에만 사용할 수 있고 by lazy 는 val 에만 사용할 수 있다 정도만 알고 있었습니다.. 어떻게 동작하는지는 관심이 없었는데 시간이 나서 이번 기회에 내부적으로 각각 어떻게 내부적으로 동작하는지를 알고 싶어서 분석하게 되었습니다. 1. lateinit 테스트 코드 class LateinitTest { private lateinit var name: String fun test() { println(name) } } 위의 코드를 자바로 변환하면 아래와 같은 자바 코드가 보입니다. lateinit 의 동작 방식을 간단히 말하면 lateinit 으로 선언된 프로퍼티에 접근하면 내부적으로 ..
DialogFragment width 조정 앱을 개발하던 중 Dialog 가 필요해서 적용을 하기위해, DialogFragment 의 레이아웃의 width 를 match_parent 로 주고 margin 값을 이용해서 양쪽 여백을 만들려고 했으나 예상했던것과 다르게 동작하는 문제가 발생했습니다. 검색을 해보니 나와 비슷한 문제를 겪으신 분들이 많은 것 같습니다. 그 중 하나의 솔루션을 발견했고 적용한 결과 처음 원했던 대로 스크린 width 의 90%만 차지하는 Dialog 를 만들 수 있었습니다. ... override fun onResume() { super.onResume() resizeDialog() } private fun resizeDialog() { val windowManager = requireActivity().getSystem..
1. App bar(앱바 추가, 액션 추가 및 핸들링, up 액션) 1. 앱바 추가하기 support library 의 Toolbar 클래스를 사용하여 앱 바를 구현해야 합니다. support library 의 Toolbar 를 사용하면 앱이 수많은 종류의 기기에서 일관되게 작동하도록 할 수 있습니다. Activity 에 Toolbar 추가하기 (1) Activity 가 AppCompatActivity 를 확장하는지 확인한다. (2) AndroidManifest.xml 파일의 태그의 theme 속성에 NoActionBar 테마 중 하나를 지정한다. 이러한 테마 중 하나를 사용하면 앱이 Native ActionBar 클래스를 사용하여 앱 바를 제공할 수 없습니다. (3) Activity 의 레이아웃에 Toolbar 를 추가한다 아래의 코드는 Toolbar 를 추가하고 Ac..