Android(Kotlin) 26

심기일전 코틀린! - 02. Jetpack Compose (2)

이전 시간에 이어서 Compose 를 써야하는 이유에 대해 알아보자. 2) 직관적인 API 말로 들으면 어려운 단어들의 조합이지만 쉽게 말해서 데이터의 변경점이 UI에 즉각적으로 반영된다는 뜻이다. 기존 xml 방식 레이아웃에서도 DataBinding과 LiveData를 사용함으로써 어느정도 구현이 가능했지만 Compose에서는 State라는 개념으로 더욱 쉽게 구현이 가능하다. @Composable fun App() { //State 변수 val text by remember { mutableStateOf("unClicked") } Column() { //처음 화면에 등장하면 unClicked로 표시된다 Text(text=text) //버튼을 클릭하면 text의 value값이 Clicked로 변하면서 ..

Android(Kotlin) 2023.06.23

심기일전 코틀린! - 02. Jetpack Compose (1)

Compose 란 무엇인가 Compose 에 대해 알기위해선 Jetpack 에 대해 먼저 알아야한다. Android Jetpack 문서에서는 Jetpack 에 대해 이렇게 설명하고 있다. "개발자가 중요한 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 감소, 여러 Android 버전과 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 묶음" 출처 : https://developer.android.com/jetpack?hl=ko Android Jetpack 개발자 리소스 - Android 개발자 | Android Developers Android Jetpack은 코드 라이브러리 모음을 통해 최신 앱 개발자 리소스와 권장사항을 제공합니다. 지금 Jetpack을 사용하여 시작해 보세요. devel..

Android(Kotlin) 2023.06.20

심기일전 코틀린! - 01. ViewBinding

ViewBinding 이란 무엇인가 Android Studio 를 이용해 앱을 개발하는 경우 우리는 어떻게 화면을 구성하는지를 살펴보면 먼저 res -> layout 폴더에 layout xml 파일 만들고 필요한 View 들을 선언하는 것으로 화면의 틀을 잡는다. 그 후, Activity 혹은 Fragment 혹은 ViewHolder 등등 에서 LayoutInflater 를 이용하여 xml 파일을 View Object 로 가져온 후 활용한다. 이 때, 특정 View 에 접근해야하는 경우 findViewById 를 통해 xml 선언 시 설정한 id 를 가진 뷰를 찾아서 접근하게 된다. ... ... //MainActivity.class lateinit var textView: TextView overrid..

Android(Kotlin) 2023.06.12

심기일전 코틀린! - 00. 코틀린

오늘부터 그동안 배운것들을 복습한다는 생각으로 하나씩 정리해나가려한다. 함께 공부하자는 마음으로 읽어나가주면 좋겠다. Java 에서 Kotlin 으로 안드로이드 앱을 만드는 방법은 참 다양하다. React-Native 나 Flutter 를 이용하여 하이브리드 방식으로 개발할 수도 있고 Java 나 Kotlin 을 이용하여 네이티브 방식으로 개발할 수도 있다. 혹은 최근에 핫한 웹앱 방식으로 개발할 수도 있다. 그 중에서도 우리는 Kotlin 에 주목해보려 한다. 사실 Kotlin 이 세상에 처음 모습을 드러낸 것은 꽤 오래된 일이다. 2011년 7월에 JetBrains 가 처음 Kotlin 을 발표하고나서 벌써 10년이라는 세월이 넘게 지났다. 하지만 안드로이드 공식 지원 언어가 된 것은 구글 I/O 2..

Android(Kotlin) 2023.06.02

안드로이드 레트로핏(Retrofit) (2)

1. API가 제공하는 JSON 형식 값을 토대로 data class를 작성 안드로이드 스튜디오의 플러그인 중 하나인 JSON To Kotlin Class 를 활용하자 2. API를 활용할 클래스를 작성 (예시: 네이버 검색 API) class NewsOpenApi { companion object { const val domain = "https://openapi.naver.com/v1/search/" // 도메인에는 API를 사용할 때 변하지 않는 주소 부분을 넣으면 된다 } } 3. 클래스 외부에 인터페이스 작성 interface NewsOpenService { // API에 따라 헤더에 정보를 추가해야할 때가 있는데 // 인터페이스 부분에 헤더 어노테이션으로 추가하면 된다 @Headers( "X-..

Android(Kotlin) 2021.09.17

안드로이드 레트로핏(Retrofit) (1)

레트로핏이란 안드로이드에서 데이터 통신을 가능하게 하는 라이브러리 데이터를 가져올 곳(웹사이트 or API)과 데이터의 형식을 필요로 한다 JSON : 속성-값 or 키-값 의 쌍으로 이루어진 데이터를 전달하기 위해 텍스트를 사용하는 개방형 표준 포맷 현재 데이터 통신용으로 가장 많이 사용되고 있고 구조 또한 간단하다 네트워크 관점에서 JSON은 HTTP와 같은 데이터 프로토콜에서 바디 영역에 정의된 데이터 통신을 위한 개방형 규격 JSON의 구조 1) JSON 객체는 중괄호로 시작과 끝을 나타낸다 { } 2) JSON 데이터는 "이름" : 값 의 형식으로 표현되며 여러개일 경우 ,(쉼표) 로 구분 이름은 반드시 따옴표로 감싸야 한다 3) JSON 배열은 대괄호로 시작과 끝을 나타낸다 [ ] JSON 오..

Android(Kotlin) 2021.07.29

HttpURLConnection

1. 안드로이드에서 네트워크 관련 작업은 백그라운드 처리를 원칙으로 하기 때문에 build.gradle 의 dependencies 에 코루틴 의존성을 추가한다 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9' 추가 2. manifest 파일에서 인터넷 접근 권한을 추가 3. 참고해볼 코드 - url을 입력하면 해당 웹페이지 코드를 출력하는 예시 CoroutineScope(Dispatchers.IO).launch { try { //네트워크 관련 코드는 앱이 멈추는 치명적인 오류가 발생할 가능성이 높기 때문에 예외처리 꼭 하자 val url = URL(urlText) //입력받은 텍스트를 url로 캐스팅 val urlConnect..

Android(Kotlin) 2021.07.29

안드로이드 액티비티와 프래그먼트 생명주기

Activity Lifecycle onCreate() : 액티비티가 생성되는 시기 onStart() : 생성된 액티비티가 화면에 보이기 시작하는 시기 onResume() : 액티비티가 실제로 실행됨 *실행 중을 나타내는 생명주기는 따로 존재하지않고 onResume이 호출되었다면 그 액티비티가 실행중인것 onPause() : 액티비티의 일부가 다른 액티비티에 의해 가려짐 *다른 액티비티가 투명하거나 작아서 뒤쪽 액티비티의 일부분이라도 보인다면 onPause 상태 onStop() : 다른 액티비티가 실행되어서 화면이 완전히 가려짐 onDestroy : 액티비티가 종료됨 *finish()나 뒤로가기가 실행되면 onPause와 onStop이 동시에 실행된 후 onDestroy가 호출되며 액티비티가 메모리에서 제..

Android(Kotlin) 2021.07.23

Firebase를 이용한 클라우드 메시징

어떡하면 사용자들이 내 앱을 잊지 않고 사용해줄까? 매일 반복적으로 사용하길 바란다면 역시 푸시 알림이 가장 효과적일 것이다 정해진 시간에 사용을 유도하는 메시지를 푸시 알림으로 받는다면 잊지 않고 사용해줄 것이다 그리고 안드로이드 스튜디오는 푸시 알림을 위한 강력한 툴을 제공한다 바로 Firebase Console을 통한 클라우드 메시징이다 먼저 manifest 파일에 인터넷 권한을 설정한다 앱 내부적으로 처리하는 것이 아닌 Firebase에서 알림을 뿌리는 것이기 때문이다 다음은 안드로이드 스튜디오 상단의 Tools에서 Firebase를 클릭한 후 열린 창에서 Cloud Messaging을 찾아 연다 1, 2단계는 툴에서 지시하는 대로 따른다 3단계부터가 좀 다른데 툴에서는 FirebaseInstan..

Android(Kotlin) 2021.06.18

ViewPager2의 프래그먼트에 접근하는 방법

viewpager2에 포함되는 프래그먼트들은 transaction 하는 것도 아니라서 findfragmentbytag로 참조할 수도 없다 하지만 검색해보면 나오는 스택오버플로의 글들은 viewPager를 기반으로 한 질문들뿐.. 근데 찾다보니 FragmentPagerAdapter에서는 getItem()으로 프래그먼트를 참조한다던데 ViewPager에서 ViewPager2로 이전 | Android 개발자 | Android Developers ViewPager에서 ViewPager2로 이전 | Android 개발자 | Android Developers ViewPager2는 ViewPager 라이브러리의 개선된 버전으로, 향상된 기능을 제공하며 ViewPager 사용 시 발생하는 일반적인 문제를 해결합니다. ..

Android(Kotlin) 2021.06.16