전체 글

    [Android] 리사이클러뷰(RecyclerView) 사용하기 (with ViewBinding)

    오늘은 안드로이드 앱 개발을 하면서 가장 많이 사용하게 되는 View 중 하나인 리사이클러뷰(RecyclerView)에 대해 알아보자. 리사이클 러뷰(RecyclerView) 란? RecyclerView란 한 화면에 표시할 수 없는 많은 데이터를 스크롤 가능한 리스트로 표시해주는 위젯이다. RecyclerView 사용하면 대량의 데이터 셋을 효율적으로 표시할 수 있다. 개발자가 데이터를 제공하고(데이터 셋), 각 항목의 모양(아이템 뷰)을 정의하면 RecyclerView 라이브러리가 필요할 때 요소들을 동적으로 생성한다. 이름에 Recycler가 들어가 있듯이 RecyclerView는 ViewHolder를 사용하여 뷰를 재활용하므로 앱 성능과 메모리 관리 측면에서도 매우 유용하다. 이와 비슷한 위젯으로 ..

    [Android] 안드로이드 스튜디오에서 에뮬레이터(AVD) 분리하기

    안드로이드 스튜디오 최신 버전을 설치하면 기본 값으로 위와 같이 window 안에 에뮬레이터가 박혀있다. 개인적으로는 코드 작성할 화면이 줄어들고, 로그를 보기도 불편해서 에뮬레이터를 분리해서 사용한다. 에뮬레이터를 분리하는 방법은 다음과 같다. 에뮬레이터 분리하기 File -> Settings 를 클릭한다. Tools 그룹의 Emulator 탭을 클릭한 뒤 Launch in a tool window 체크를 해제하고 OK 버튼을 누르면 끝이다. 바로 적용이 안된다면 안드로이드 스튜디오를 재부팅하면 적용된다.

    [SWEA] 5644. [모의 SW 역량테스트] 무선 충전 (Java, 자바)

    문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRDL1aeugDFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 먼저 좌표 저장용 Point 클래스, BC(Battery Charger) 클래스, A와 B의 이동정보를 저장할 배열 등을 생성하여 입력 값들을 저장하였다. A와 B의 처음 위치를 초기화한 후 충전 가능한지 판단 후 충전하였다. A와 B를 동시에 이동시간 1씩 주어진 방향으로 움직인 후 충전 가능한지 판단 후 충전하였다. 충전 가능한지 판단하는 할때는 A와 B의 좌표와 각 BC들의 좌표 사..

    [백준] 2477. 참외밭 (Java, 자바)

    https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 문제 시골에 있는 태양이의 삼촌 댁에는 커다란 참외밭이 있다. 문득 태양이는 이 밭에서 자라는 참외가 도대체 몇 개나 되는지 궁금해졌다. 어떻게 알아낼 수 있는지 골똘히 생각하다가 드디어 좋은 아이디어가 떠올랐다. 유레카! 1m^2의 넓이에 자라는 참외 개수를 헤아린 다음, 참외밭의 넓이를 구하면 비례식을 이용하여 참외의 총개수를 구할 수 있다. 1m^2의 넓이에 자라는 참외의 개수는 헤아렸고,..

    [백준] 2559. 수열 (Java, 자바)

    https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 문제 매일 아침 9시에 학교에서 측정한 온도가 어떤 정수의 수열로 주어졌을 때, 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 알아보고자 한다. 예를 들어, 아래와 같이 10일간의 온도가 주어졌을 때, 3 -2 -4 -9 0 3 7 13 8 -3 모든 연속적인 이틀간의 온도의 합은 아래와 같다. 이때, 온도의 합이 가장 큰 값은 21이다. 또 다른 예로 위와 같은 온도가 주어졌을 때..

    [SWEA] 1240. 단순 2진 암호코드 (Java, 자바)

    문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15FZuqAL4CFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 주어진 이진 암호 코드들의 맨 뒤 숫자는 항상 1이므로 주어진 배열에서 암호 코드를 찾을 때 뒤에서부터 1을 찾도록 반복했다. 암호 코드의 총길이는 56으로 고정되어있으므로 배열 한 행을 탐색할 때 남은 인덱스가 56보다 작으면 탐색을 중지하였다. (배열 한 개당 암호코드는 한 개 이므로) 주어진 이진 암호코드들은 7자리 이진 코드 이므로 모두 십진수로 변환하여 배열에 저장하였다. 입력받..

    [Android] RxJava 프로그래밍(1) - RxJava란?

    프로젝트를 진행하면서 서버와의 통신을 구현하던 중 비동기 처리에 무엇을 사용할까 고민 중에 RxJava를 사용하기로 하였다. 그 이유는 다음과 같다. 1. 비동기 이벤트를 매우 쉽게 처리 가능 2. REST API 통신 라이브러리인 Retrofit과의 뛰어난 호환성 3. 간결한 코드 및 콜백 지옥 탈출 위 세가지 이유 외에도 많은 IT 기업에서 안드로이드 개발자 채용 시 RxJava 사용 경험이 있는 개발자를 우대하고 있으며, 새로운 기술을 습득하고자 하는 욕구에서 RxJava를 공부해보기로 했다. 본 포스팅은 옥수환님이 저자인 책 '아키텍처를 알아야 앱 개발이 보인다'에서 RxJava 파트를 공부하여 정리한 것이다. 1. RxJava란? RxJava란 Reactive X (Reactive Extensi..

    [백준] 1244. 스위치 켜고 끄기 (Java, 자바)

    https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 문제 1부터 연속적으로 번호가 붙어있는 스위치들이 있다. 스위치는 켜져 있거나 꺼져있는 상태이다. 에 스위치 8개의 상태가 표시되어 있다. ‘1’은 스위치가 켜져 있음을, ‘0’은 꺼져 있음을 나타낸다. 그리고 학생 몇 명을 뽑아서, 학생들에게 1 이상이고 스위치 개수 이하인 자연수를 하나씩 나누어주었다. 학생들은 자신의 성별과 받은 수에 따라 아래와 같은 방식으로 스위치를 조작하게 된다. ..

    [Android] 투명 상태 바 만들기 (Transparent Status Bar)

    프로젝트를 진행하면서 투명 상태 바(transparent status bar)를 적용해야 하는 화면이 있었습니다. 구글링을 해봐도 코드가 deprecated 돼있거나, 적용한 결과물이 생각한 것과 다른 부분이 있어서 삽질을 반복하다가 겨우 알아낸 방법을 공유해 드리고자 합니다! 제가 원하는 것은 위 화면 처럼 지도나 사진이 있는 화면에서 투명한 상태 바를 가지는 것이었습니다. 이를 위해서는 Style XML 파일과 Activity 혹은 Fragment에서 코드를 추가해야 합니다. 프로젝트 생성 Empty Acticity로 프로젝트를 생성 한 뒤 Navigation Component를 이용해 Fragment 두 개를 추가하였습니다. 첫 번째 Fragment에는 두 번째 Fragment로 이동하는 버튼을 추..

    [Android] 안드로이드 스튜디오 SDK 경로, AVD 경로 변경해서 C드라이브 용량 확보하기 (Android Studio)

    안드로이드 스튜디오로 개발을 하다 보면 업데이트되는 API 버전과 여러 라이브러리들로 인해서 SDK 용량이 늘어나게 되는데요, 만약 SDK 경로가 C드라이브에 있다면 넉넉한 용량이 아닌 이상 부담이 될 수 있는 상황입니다. AVD도 마찬가지로 여러 기기를 사용한다면 기기 하나하나가 크게는 10GB 가까이 하기 때문에 C드라이브에 저장해놓기는 부담이 됩니다. 이번 포스팅에서는 SDK와 AVD의 경로를 변경하여 C드라이브의 용량을 확보하는 방법을 알아보겠습니다! SDK 경로 변경 먼저 현재 SDK 경로를 확인합니다. 안드로이드 스튜디오에서 프로젝트를 오픈한 뒤 우측 상단에 큐브 모양 아이콘(SDK Manager)을 눌러줍니다. 상단에 Android SDK Location을 살펴보면 C:\Users\HANSA..

    [Android] 안드로이드 스튜디오 JDK, SDK, AVD 설치

    오늘은 저번 포스팅 '안드로이드 스튜디오 설치하기' 에 이어서 개발을 시작하기 위해 JDK, SDK, AVD 를 설치하여 개발환경을 구축해보겠습니다!🐱‍🏍 JDK 설치 예전에는 자바 JDK를 설치하여 설정을 해주어야 했지만, Android Studio 2.2 버전 이상부터는 Android Studio에 최신 버전의 OpenJDK를 내장하고 있으므로 따로 JDK를 설치하지 않아도 안드로이드 앱을 개발하는데 문제가 없습니다. 프로젝트를 생성 후 앱 수준의 build.gradle 파일에 들어가 보면 위와 같이 JDK가 설정되어 있습니다. SDK 설치 SDK를 설치하기 위해서 우선 새 프로젝트를 생성해 줍니다. 안드로이드 스튜디오를 실행하고 Projects 탭에서 New Project 버튼을 눌러줍니다. Emp..

    [Android] 안드로이드 스튜디오 설치하기 (Android Studio Installation)

    오늘은 안드로이드 앱 개발을 시작하기 위해 안드로이드 스튜디오를 설치하고 개발환경을 구축해보겠습니다!😎 🤔안드로이드란? 안드로이드(Android)는 구글에서 만든 모바일 운영 체제입니다. 휴대전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터베이스 그리고 표준 응용프로그램(웹 브라우저, 이메일, SMS 등)을 포함하고 있는 소프트웨어 스택입니다. 안드로이드는 리눅스 커널 위에서 동작하며, 자바와 코틀린으로 앱을 만들어 동작합니다. 💻안드로이드 스튜디오란? 안드로이드 스튜디오(Android Studio)는 안드로이드 앱(Android App) 개발을 위한 공식 통합 개발 환경(IDE)이며 인텔리제이(IntelliJ) IDEA를 기반으로 합니다. IntelliJ의 편리하고 강력한 코드 편집기..