일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터베이스
- 안드로이드_프로그래밍
- 자바
- textview auto scroll
- 코드리뷰
- edwith
- 부스트코스
- RecyclerView
- 제약 레이아웃
- 뷰
- 수명주기
- 프로젝트
- IOS
- 프로그래밍
- 안드로이드
- 테이블_레이아웃
- 텍스트뷰 자동 스크롤
- 서비스
- 상대 레이아웃
- 리니어 레이아웃
- 액션바
- Swift
- 안드로이드 스튜디오
- 드로어블
- SceneDelegate
- 아이폰
- 스낵바
- 코틀린
- 레이아웃
- 텍스트뷰 스크롤
- Today
- Total
목록프로그래밍 (26)
듀다의 성장개발로그
오늘 다룰 내용은 브로드캐스트 수신자인데요, 애플리케이션 구성 요소중에 하나였던 브로드캐스트 수신자 기억하시나요? 네 맞습니다. 브로트캐스트도 애플리케이션 구성 요소 중 하나이지요. 관련 포스팅을 하나씩 채워가는 것을 보니 뿌듯하군요. 브로드캐스트 수신자란 말 그대로 브로드캐스트를 수신할 수 있는 객체입니다. 여러 사람에게 한꺼번에 데이터를 뿌려주는 것을 브로드캐스트라고 하는데요, 이것을 받을 수 있는 객체가 바로 '브로드캐스트 리시버(브로드캐스트 수신자)'입니다. 즉, 브로드캐스트 수신자란 뿌려진 데이터를 받을 수 있는 것을 말하는 것이지요. 따라서 브로드캐스트를 등록해놓아야 브로드캐스트를 받을 수 있습니다. 브로드캐스트 리시버도 화면이 없고, 시스템이 관리하는 것입니다. 브로드캐스트 객체를 이용해서 ..
지난번에 액티비티에 대해서 포스팅을 했었는데요, 액티비티에는 실행부터 종료시까지 순차적으로 실행하는 메소드가 있습니다. 이것을 바로 '수명주기 메소드'라고 부릅니다. 수명주기 메소드에는 이미 익숙한 이름인 onCreate()에서부터 onStart, onStop, onDestroy, onPause, onResume등이 존재합니다. 왜 수명주기 메소드가 필요할까요? 액티비티의 상태를 나타내기 위함입니다, 액티비티는 여러 개가 실행되어 있으면 액티비티 스택에 쌓이게 됩니다. 그 안에서 어떤 것이 실행중이거나 중지된 것인지 구분할 필요가 있겠죠? 액티비티의 대표적인 상태는 세 가지로, 중지(Stop), 일시 중지(Pause), 실행(Run)이 바로 그것입니다. 이 상태들은 언제 지정되는 것일까요? 이것은 마치 ..
인텐트는 액티비티의 인스턴스 객체로 시스템으로 전달되는 일종의 명령을 담고 있는 객체입니다. 시스템 안에서 데이터를 옮기는 데 필요한 객체이지요. 이 인텐트가 필요한 이유는 액티비티를 다루기 위해서인데요, 시스템에서 액티비티를 관리하기 때문에, 예를 들어 액티비티를 띄우거나 없애려고 한다면 시스템에 요청해야 합니다. 그런데 시스템에 무언가를 요청할 때는 반드시 시스템이 이해할 수 있는 포맷으로 전달해야 합니다. 바로 이 인텐트가 시스템이 이해할 수 있는 포맷이기 때문에 인텐트를 사용하는 것이지요. 인텐트는 액티비티끼리 뿐만 아니라 액티비티와 서비스도 데이터를 전달할 수 있게 하고, 브로드캐스트 수신자와도 통신할 수 있게 합니다. 인텐트에는 명시적 인텐트와 암시적 인텐트가 존재합니다. 명시적 인텐트는 액티..
안드로이드 앱을 사용하다 보면 다른 화면으로 넘어가거나, 표시되지 않던 부분들이 표시되는 기능들을 많이 볼 수 있습니다. 앱이 두 개 이상의 화면을 사용하기 때문에 그러한 기능을 만들 수 있는 것이지요. 이제 한 가지 화면을 구성하는 것을 넘어 두 개 이상의 화면을 다루는 것도 시도해 볼 차례입니다. 하나의 화면은 '액티비티'라고 부릅니다. 안드로이드 스튜디오의 빈 프로젝트에서도 기본적으로 포함된 레이아웃과 소스 파일 이름에 'activity'가 포함되듯 안드로이드의 화면은 액티비티라고 부릅니다. 한 액티비티는 하나의 xml과 하나의 java 소스 파일이 한 쌍으로 구성됩니다. 액티비티를 만드는 과정은 강의에서 다섯 가지 단계로 소개했는데요, 우선 새로운 액티비티 만들고 -> 새로운 액티비티의 XML 레..
벌써 두번째 코드리뷰를 받았습니다. 이번에는 상당히 빨리 리뷰 결과를 받았습니다. 상세결과는 위와 같이 나왔습니다. 간결하다는 평이 있군요. 간결하게 하려고 고민을 좀 했는데 프로그램 상에서 티가 났나 봅니다. 작은 부분에 대해서도 칭찬의 코멘트를 남겨 준 것이 감동적이었습니다. 또, 강의만으로는 알 수 없는 이런 부분들을 놓치지 않고 피드백해주신게 정말 고마웠습니다. 누군가 옆에서 알려주면 금방 알 수 있는 부분이라 코드리뷰가 꼭 필요했다고 생각합니다. 레이아웃에 대해서도, 혼자 연습했으면 그냥 넘어갔을지도 모르는 부분들에 대해서 피드백을 받았습니다. 혼자서만 연습했으면 모르고 넘어갔을 것이 분명한 부분들이라 정말 고맙게 느껴지네요. 한 줄 한 줄 얼마나 꼼꼼히 검토하셨는지 알 수 있는 부분이었습니다...
안녕하세요 오늘은 부분 화면으로 사용하기 좋은 리스트뷰에 대해서 이야기하겠습니다. 리스트뷰는 안의 아이템들을 일렬로 나열하고, 하나를 선택할 수 있는 위젯입니다. 리스트뷰처럼 여러 아이템을 다루며 그 중 하나를 선택하는 위젯을 '선택 위젯'이라고 하는데요, 이 선택 위젯은 다른 위젯과 다르게, '어댑터'라는 것이 존재하며, 뷰가 아닌 어댑터가 데이터를 관리합니다. 또한, 어댑터가 각각의 아이템으로 보여줄 뷰까지 생성시킵니다. 어댑터가 데이터도 관리하고 뷰도 관리하는 것이지요. 스피너는 프로그램에서 많이 보셨을 바로 그것입니다. 위 그림처럼 선택할 수 있는 목록을 보여주고 선택한 것을 표시하는 것인데요, 이것을 안드로이드에서는 '스피너'라는 이름으로 표현합니다. 스피너도 목록 중에서 하나를 선택하는 것이니..
오늘은 좀더 이론적인 내용을 다뤄보도록 하겠습니다. 인플레이션이라는 개념입니다. 하나의 액티비티는 레이아웃 파일(xml)과 소스 코드 파일(java)로 구성되는데요, 두 개의 파일이 쌍으로 이루어집니다. 그런데 이 파일들의 내용을 자세히 보면, 화면 레이아웃 상에 어떤 위젯이 존재한다고 하더라도 xml파일에 그 위젯의 정보만 있을 뿐, 생성해주는 코드는 존재하지 않는 경우가 있습니다. 화면에 표시된다는 건 객체화되어 메모리 어딘가에 올라가있다는 것인데 그러면 이 위젯은 누가, 언제 생성하여 메모리에 할당시킬까요? 레이아웃에 추가된 버튼을 객체화하여 메모리 공간을 할당하는 것은 시스템의 역할입니다. 이 과정을 바로 인플레이션이라고 하는데요, MainActivity.java 파일에 기본으로 존재하는 이 se..
앱을 구성하다 보면 메시지가 잠시 떴다 사라지게 하는 기능이 필요할 때가 있을 것입니다. 여러분이 사용하시는 앱에서도 이 기능을 많이 보셨을겁니다. 물론 안드로이드 스튜디오로 이런 기능을 만들 수 있습니다. 음식과 연관짓는 것을 좋아하는 안드로이드답게 이 기능을 '토스트'라고 부릅니다. 토스트를 추가하는 것은 매우 간단합니다. 메소드 Toast.makeText를 호출합니다. 그리고 그 안에 적절한 인자를 넣고 .show()를 붙여주기만 하면 끝. 지정된 시점에서 메시지가 출력됩니다. 인자로는 Context, 내용, 토스트 길이가 들어갑니다. 그럼 조금씩 바꿔볼까요? 출력 위치를 바꿀 때는 setGravity를 활용할 수 있습니다. 그런데 setGravity를 사용하기도 전에 메시지가 출력되어서는 안되겠죠..