Android/Code

    [ Android ] [ Kotlin ] 프래그먼트 onClick

    ✔ 프래그먼트에 있는 뷰들의 클릭 처리 이벤트는 액티비티와 다르다. ✔ 액티비티에서는 layout 파일의 클릭 이벤트를 희망하는 뷰에 onClick 속성을 추가하고 액티비티에서 onClick 메서드를 구현하면 가능했지만, ✔ 프래그먼트에서는 코드로 직접 클릭 리스너를 연결시켜줘야 한다. ✔ fragment_main.xml에 container라는 id를 갖는 layout 안에 버튼 3개가 있다고 가정하자. 코드 class MainFragment : Fragment(), View.OnClickListener { private lateinit var binding: FragmentMainBinding override fun onCreateView( inflater: LayoutInflater, containe..

    [ Project ] [ Android ] [ Kotlin ] 콜백 함수

    [ Project ] [ Android ] [ Kotlin ] 콜백 함수

    용어 정리 ✔ 콜백 (Callback) : 이벤트가 발생하면 특정 메소드를 호출해 알려준다. ✔ 리스너 (Listener) : 이벤트가 발생하면 연결된 리스너(핸들러)들에게 이벤트를 전달한다. 하지만 안드로이드에서는 리스너를 1개 밖에 등록하지 못한다는 점에서 콜백이랑 개념이 크게 다르지 않다. ✔ 옵저버 (Observer) : 데이터나 속성의 변경을 감지하여 구독자에게 변경사항을 전달한다. 원리 콜백 패턴이 구체적으로 어떻게 동작하는지 알아보자. ▫ 개발을 하다 보면 다른 클래스의 함수나 변수에 접근해야 할 일이 종종 생긴다. ▫ 위의 그림처럼 A 클래스에서는 동작할 수 없고, B 클래스에서만 동작 가능한 메서드 M을 A 클래스에서 사용하려면 어떻게 해야 할까? ▫ A 클래스에서 인터페이스를 선언하고 ..

    [Android] [Kotlin] 객체 인스턴스

    [Android] [Kotlin] 객체 인스턴스

    액티비티 클래스에서 일반 클래스를 참조 요약 ✔ 다른 클래스에 있는 멤버변수와 멤버함수에 접근하기 위해 인스턴스를 생성하는 방법 ✔ 다른 클래스 객체 인스턴스를 멤버 변수에 넣고 lazy init 했을 때, 같은 인스턴스가 참조되는지 확인 ✔ 런타임 시 한 번 생성되는 companion object에 있는 인스턴스 생성 함수를 각각 호출했을 때, 같은 인스턴스가 참조되는지 확인 코드 MainActivity.kt class MainActivity : AppCompatActivity() { private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } private val mTest by lazy { test() } override f..

    [Project] [Android] [Kotlin] Log Window

    요약 ◽ 모든 클래스에서 로그 관련 기능을 참조하여 사용할 수 있도록 LogUtil 클래스 구현 ◽ 로그를 앱 내에서 볼 수 있는 로그 윈도우 기능 구현 ◽ 로그 윈도우 터치 드래그앤 드롭 뷰 이동 기능 구현 ◽ 로그 윈도우 첫 등장 위치를 설정하기 위한 뷰의 width, height 구하는 코드 구현 ◽ 로그 윈도우 확대/축소 애니메이션을 사용한 뷰 보이기/숨기기 기능 구현 ◽ 각 클래스마다 TAG 설정하는 방법 및 선언 위치 전체 코드 https://github.com/tmdfyd2020/Android-Sources/tree/main/LogWindow GitHub - tmdfyd2020/Android-Sources: Android Toy Project Codes Android Toy Project C..

    [Android] [Kotlin] Google Map

    [Android] [Kotlin] Google Map

    Google Map 기초 사전 작업 구글 플레이 서비스 SDK 설치하기 ◽ Google Play services를 설치해준다. Google Maps Activity로 시작하기 Google Map API 키 받기 ✔ Google Map 액티비티로 프로젝트를 생성하면 google_maps_api.xml이 자동을 생성되는데 해당 파일에서 구글 맵을 사용하기 위한 API 키를 받을 수 있는 링크를 만들어준다. ✔ 별도로 접근하기 위해서는 Google Cloud Platform에서 프로젝트를 생성하고, 해당 프로젝트의 SHA-1 키를 등록한 후, 키를 받아야 한다. 코드 분석 build.gradle implementation 'com.google.android.gms:play-services-location:17..

    [Android] [Kotlin] EditText 자동 포커싱 및 키보드

    대상이 되는 EditText 더보기 1 2 3 cs 포커싱 및 키보드 등장 더보기 private fun EditText.setFocusAndShowKeyboard(context: Context) { this.requestFocus() setSelection(this.text.length) this.postDelayed({ val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager inputMethodManager.showSoftInput(this, InputMethodManager.SHOW_FORCED) }, 100) } 포커싱 해제 및 키보드 숨기기 더보기 private fun E..

    [Android] [Kotlin] Dialog로 액티비티 띄우기

    [Android] [Kotlin] Dialog로 액티비티 띄우기

    UI 전체 코드 MainActivity.kt 더보기 class MainActivity : AppCompatActivity() { val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) } fun onClick(v: View) { when(v.id) { R.id.button -> { val intent = Intent(this, DialogActivity::class.java) intent.addFlags(Intent.FLAG_ACTI..

    [Android] [Kotlin] chooser Intent (카메라, 갤러리)

    기능 설명 ✔ 카메라를 찍거나 갤러리에서 사진을 불러와서 선택한 사진을 이미지뷰로 띄워주는 코드 UI 전체 코드 AndroidManifest.xml 더보기 1 2 3 4 5 6 7 8 9 10 11 { if (!allPermissionsGranted()) { ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE), PERMISSION_CODE) } chooserIntent() } } } private fun chooserIntent() { // 갤러리에서 불러오기 Intent val galleryIntent = Intent(Intent.ACTION_..

    [Android] [Kotlin] 프래그먼트 사용 방법 및 구조

    사용 용도 ✔ 변화하는 여러 화면을 표현할 때, 액티비티를 계속 띄우는 것 보다는 같은 크기의 화면이라면 프래그먼트로 전환시키는 것이 더 효율적인 구조 설계이다. ✔ 변하지 않는 한 화면을 layout에서 프래그먼트로 표현할 때는 를 사용하지만, 이벤트에 의해서 같은 크기의 layout에 여러 화면이 전환되는 경우에는 에 여러 프래그먼트를 표현하는 방법이 효율적이다. 액티비티에서 프래그먼트 전환하기 액티비티에서 프래그먼트로 값 전달하면서 프래그먼트 전환하기 ✔ 프래그먼트는 액티비티에서 관리해주기 때문에 프래그먼트 전환에 관련한 코드는 액티비티에 구현하는 것이 효율적이다. ✔ activity_main.xml 내에 있는 에 FirstFragment를 띄워주기 위한 코드이다. ✔ 또한, 액티비티에서 프래그먼트..