안드로이드/개발 관련
[Kotlin] 안드로이드 이미지 저장 기능 사용해보기. Bitmap -> Image File (View, Layout을 이미지로 저장해보기. Android 10(API 29) 이전과 이후 외부 저장소 접근)
앱별 파일에 액세스 | Android 개발자 | Android Developers 앱별 파일에 액세스 대부분의 경우 앱은 다른 앱에서 액세스할 필요가 없거나 액세스하면 안 되는 파일을 만듭니다. 시스템에서 제공하는 아래 위치에 이러한 앱별 파일을 저장할 수 있습니다. developer.android.com 앱 별로 외부 저장소(SD카드)에 접근할 때, Environment.getExternalStorageDirectory()를 사용했었다. 그러나 이 메서드는 API 29 (Android 10)에서 Deprecated되었다. Environment | Android Developers developer.android.com 공식문서에서는 왜 Deprecated되었는지 찾을 수 없었다. 안드로이드 스튜디오에서..
[Kotlin] 안드로이드 리사이클러 뷰 새로고침 기능 사용해보기. SwipeRefreshLayout 사용.
가끔 앱들을 보면, 화면을 아래로 당기면 리스트가 새로고침이 되는 어플들이 있을 것이다. 이런 기능은 어떻게 구현한 것인지 항상 궁금했었는데, 오늘 알아보고 한 번 정리해 보겠다. Swiperefreshlayout | Android 개발자 | Android Developers Swiperefreshlayout 스와이프하여 새로고침 UI 패턴을 구현합니다. 최근 업데이트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전 2020년 7월 22일 1.1.0 - - 1.2.0-alpha01 종속 항목 선언 SwipeRefreshLayout developer.android.com 오늘 이용할 라이브러리는 이 Swiperefreshlayout이라는 라이브러리다. 안드로이드 Jetpack의 구성요소이며, 화면을..
[Kotlin] 안드로이드 리사이클러뷰 안에 리사이클러뷰 사용해보기, 이중 리사이클러뷰 (Feat. 뷰 바인딩, 데이터 바인딩)
RecyclerView로 동적 목록 만들기 | Android 개발자 | Android Developers RecyclerView로 동적 목록 만들기 Android Jetpack의 구성요소 RecyclerView를 사용하면 대량의 데이터 세트를 효율적으로 표시할 수 있습니다. 개발자가 데이터를 제공하고 각 항목의 모양을 정의하면 R developer.android.com 리사이클러뷰는 안드로이드 JetPack의 구성요소 중 하나이다. 이미 오래전부터 안드로이드 개발에서 리스트를 구현할 때에는 리사이클러뷰를 사용한다. 그만큼 유용한 기능이 많이 있다. 리사이클러 뷰를 구현하는 방법은 아래 코드를 살펴보며 차차 알아가겠지만 크게 나뉘어 보자면, 레이아웃 XML에 선언 리사이클러뷰 리스트의 내용물을 담을 Hol..
[Kotlin] 안드로이드 데이터 바인딩, 데이터 결합, Data Binding
데이터 결합 라이브러리 | Android 개발자 | Android Developers 데이터 결합 라이브러리 Android Jetpack의 구성요소. 데이터 결합 라이브러리는 프로그래매틱 방식이 아니라 선언적 형식으로 레이아웃의 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 developer.android.com Android Jetpack의 구성요소 중 하나. 지난 번에 다뤘던 ViewBinding과 같이 쓰인다고 생각하면 된다. 공식문서에는 레이아웃에 선언되어 있는 뷰에 직접 구성요소를 결합한다고 정의되어있다. 원래 view에 특정한 객체의 변수를 보여주려면, 소스 코드에서 다음과 같이 정의했어야 했다. (TextView라고 가정해보자.) findViewById / Kotlin Extens..
[Kotlin] 안드로이드 뷰 바인딩, 뷰 결합, View Binding
뷰 결합 | Android 개발자 | Android Developers 뷰 결합 뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 developer.android.com 뷰 바인딩에 대한 공식문서 뷰 바인딩은 쉽게말해서 코드 파일에서 XML에 정의된 뷰들을 바로 참조할 수 있는 기능이다. 뷰 바인딩은 findViewById를 대체할 수 있다. 따라서 모든 뷰에 대해 findViewById를 일일이 호출할 필요가 없다. 또한 findViewById에서는 잘못된 id를 매개변수로 전달할 경우, null 위험성이 존재한다. 구글에서 Kotlin Extension을 Deprecat..
[Android] 정리해야 할 개발기술 목록 - 계속 업데이트중
모든 기술은 왜 이 기술을 써야하는지 알아야 함 ! 뷰바인딩과 데이터 바인딩 리사이클러 뷰에 데이터 바인딩 넣어서 사용해보기 리사이클러 뷰 안에 리사이클러 뷰 사용해보기 리사이클러 뷰 새로고침 인스타그램 공유하기 기능 : 액션과 데이터를 이용한 Intent 실행 Retrofit2 + OkHttp3 / API JsonObject로 받아서 찍기 이미지 저장 기능 사용하기. - Deprecated된 것 있음. Room DB 사용 디자인 패턴 - MVC, MVP, MVVM AAC ViewModel 안드로이드 아키텍처 권장사항 Corutine, LiveData, RxJava(RxKotlin), Flow : 뜨고있는 비동기 기술 테마 관련 - Night, Day 리사이클러 뷰 무한 스크롤 사용 - 페이징3 사용. ..
[Android][Java] 프래그먼트 뒤로가기 누르면 원상복구 + 프래그먼트 데이터 전달
이번 포스트는 프래그먼트에서 뒤로가기 버튼을 눌렀을 때, 원래 있었던 프래그먼트로 돌아오는 것을 알아보겠다. 프래그먼트 관리자 | Android 개발자 | Android Developers 참고: Navigation 라이브러리를 사용하여 앱의 탐색을 관리하는 것이 좋습니다. 프레임워크는 프래그먼트, 백 스택, 프래그먼트 관리자 사용에 관한 권장사항을 따릅니다. Navigation에 관한 자세한 developer.android.com 프래그먼트와 통신 | Android 개발자 | Android Developers 프래그먼트를 재사용하려면 자체 레이아웃과 동작을 정의하는 완전히 독립된 구성요소로 각 프래그먼트를 빌드합니다. 이러한 재사용 가능한 프래그먼트를 정의한 후에는 활동 및 애플리케이 developer..
[Android] startActivityForResult Deprecated된 이유와 해결책
startActivityForResult()가 Deprecated되었다. 활동에서 결과 가져오기 | Android 개발자 | Android Developers 개발자 앱 내의 활동이든 다른 앱의 활동이든 다른 활동을 시작하는 것이 단방향 작업일 필요는 없습니다. 다른 활동을 시작하고 다시 결과를 받을 수도 있습니다. 예를 들어, 앱에서 카메라 앱 developer.android.com 위 페이지를 본다면 Deprecated된 이유는 AndroidX Activity와 Fragment에 도입된 Activity Result API 사용을 적극 권장. 결과를 얻는 Activity를 실행하는 로직을 사용할 때, 메모리 부족으로 인해 프로세스와 Activity가 사라질 수 있다. (특히 카메라 같은 메모리를 많이 ..
[Kotlin]2020-여름 안드로이드 첫 앱. 알람메모-Alamemo
학교 동아리에서 졸업한 후 현업에 계신 선배님들이 코딩에 대한 멘토링을 해 주는 좋은 기회가 생겼다. 여러가지가 있었는데 웹, 안드로이드, 알고리즘 등등이 있었다. 1순위 2순위를 정할 수 있었는데 당시에 2학년이기도 했고 뭔가 무작정 만들어보고 싶어서 1순위를 웹, 2순위를 안드로이드로 했었다. 웹을 하겠다는 사람이 꽤 많았어서 그런지 안드로이드를 하게 됐다. 사실 예전부터 안드로이드에 관심이 많았어서 안드로이드에 대한 앱을 제대로 만들어 보고 싶었다. 알람메모 - Alamemo – Apps on Google Play Manage your schedule and memo at once, make the schedule sound as an alarm, and pin your memo to the top..